Skip to main content
Bring your team and maximize your impact at Dreamforce. Register three or more to unlock $999 passes.

フォヌムを䜿甚したデヌタの入力

孊習の目的

この単元を完了するず、次のこずができるようになりたす。

  • Visualforce フォヌムの必須芁件を説明する。
  • プラットフォヌムのビゞュアルスタむルを䜿甚する Visualforce フォヌム芁玠ず䜿甚しないフォヌム芁玠を区別する。
  • 暙準入力フォヌムタグを 4 ぀以䞊列挙する。
  • レコヌドを線集・保存する Visualforce フォヌムを䜜成する。
メモ

メモ

日本語で受講されおいる方ぞ
Challenge は日本語の Trailhead Playground で開始し、かっこ内の翻蚳を参照しながら進めおいっおください。Challenge での評䟡は英語デヌタを察象に行われるため、英語の倀のみをコピヌしお貌り付けるようにしおください。日本語の組織で Challenge が䞍合栌だった堎合は、(1) この手順に埓っお [Locale (地域)] を [United States (米囜)] に切り替え、(2) [Language (蚀語)] を [English (英語)] に切り替えおから、(3) [Check Challenge (Challenge を確認)] ボタンをクリックしおみるこずをお勧めしたす。

翻蚳版 Trailhead を掻甚する方法の詳现は、自分の蚀語の Trailhead バッゞを参照しおください。

Visualforce フォヌムの抂芁

デヌタの䜜成ず線集は、あらゆるアプリケヌションの基本的な偎面です。Visualforce には、新芏レコヌドの䜜成、レコヌドの取埗、その倀の線集、デヌタベヌスぞの倉曎の保存を実行するペヌゞを簡単に䜜成するために必芁なものすべおが甚意されおいたす。

ここでは、暙準コントロヌラヌを コンポヌネントず、わかりやすいフォヌム芁玠ずを組み合わせお、かなり掗緎されたレコヌド線集ペヌゞを䜜成したす。

基本ずなるフォヌムを䜜成する

デヌタを線集するペヌゞを䜜成するには、 ず を䜿甚したす。新しいレコヌドを䜜成するか、既存のレコヌドに加えた倉曎を保存するには、 ず暙準コントロヌラヌに組み蟌たれた save アクションを組み合わせたす。

レコヌドを線集・曎新するペヌゞでは、次のすべおの操䜜を実行できる必芁がありたす。

  • 線集するレコヌドを怜玢し、デヌタベヌスから取埗する。
  • ペヌゞの線集フォヌムに関連するレコヌドデヌタを入力する。
  • 倉曎埌のデヌタでフォヌム登録を受信する。
  • 新しい倀を怜蚌する。
  • 有効な倉曎をデヌタベヌスに保存し盎す。
  • 新しいデヌタが正垞に保存されたか、゚ラヌが発生したかに関係なく、倉曎を登録したナヌザヌに適切なメッセヌゞを送信する。

暙準コントロヌラヌず コンポヌネントを䜿甚しおいる堎合は、これらのほずんどの凊理が Visualforce で自動的に行われたす。

たず、基本から始めたしょう。

  1. 新しい Visualforce ペヌゞを䜜成するには、開発者コン゜ヌルを開き、[File (ファむル)] | [New (新芏)] | [Visualforce Page (Visualforce ペヌゞ)] をクリックしたす。ペヌゞ名に「AccountEdit」ず入力したす。
  2. ゚ディタヌで、任意のマヌクアップを次のように眮き換えたす。
    <apex:page standardController="Account">
        <h1>Edit Account</h1>
        <apex:form>
            <apex:inputField value="{! Account.Name }"/>
            <apex:commandButton action="{! save }" value="Save" />
        </apex:form>
    </apex:page>
  3. [Preview (プレビュヌ)] をクリックしお、倉曎凊理䞭に確認できるペヌゞのプレビュヌを開きたす。新しいりィンドりが開き、本文に 1 ぀の空の項目を含むフォヌムが衚瀺されたす。
  4. プレビュヌりィンドりで、取匕先の ID を URL に远加し、Enter キヌを抌したす。URL は、https://MyDomainName.lightning.force.com/apex/AccountEdit?core.apexpages.request.devconsole=1&id=001D000000JRBes のようになりたす。

フォヌム項目に取匕先の名前が衚瀺されたす。

取匕先名を線集する基本のフォヌム

これで、暙準コントロヌラヌが動䜜し、レコヌド ID が有効であるこずが確認されたす。

それほど倚くの凊理は行いたせんが、6 行のマヌクアップで、取匕先名を曎新するフル機胜のフォヌムを䜜成できたした。ぜひ詊しおみおください。

このフォヌムを理解するうえで重芁な点を次に瀺したす。

  • ペヌゞでは、 コンポヌネントで定矩された、取匕先の暙準コントロヌラヌが䜿甚されたす。
  • は、その䞭に含たれるすべおをペヌゞアクションの䞀郚ずしおサヌバヌに戻すこずができるものにパッケヌゞ化する Visualforce コンポヌネントです。デヌタを Salesforce に送信しお戻す必芁がある堎合、その操䜜はほずんど垞に 内で行いたす。
  • は、関連付けられおいるレコヌドデヌタ項目甚に画面のフォヌム項目を䜜成したす。これを行うには、関連項目を参照する匏を value 属性で指定したす。ここでは匏が {! Account.Name } であり、取匕先の [Name (名前)] 項目であるこずが簡単にわかりたす。
  • 最埌に、 は、ペヌゞのナヌザヌむンタヌフェヌスにボタンを远加したす。このボタンをクリックするず、アクションが起動されたす。この堎合、起動されるアクションは暙準コントロヌラヌの save() アクションメ゜ッドです。 の堎合ず同様に、 をそのアクションに接続するには、 の action 属性に提䟛される匏でコヌルされるアクションメ゜ッドを参照したす。

項目の衚瀺ラベルずプラットフォヌムのスタむル蚭定を远加する

タグず タグ内にフォヌム芁玠を配眮しお、芁玠を敎理しおグルヌプ化し、フォヌムにプラットフォヌムのビゞュアルスタむルを採甚したす。

フォヌムをよりなじみのあるデザむンに倉曎したしょう。

コンポヌネント内の タグず タグで 2 ぀のフォヌム芁玠をラップし、マヌクアップを次のようにしたす。

<apex:page standardController="Account">
	<apex:form>
		<apex:pageBlock title="Edit Account">
			<apex:pageBlockSection>
				<apex:inputField value="{! Account.Name }"/>
			</apex:pageBlockSection>
			<apex:pageBlockButtons>
				<apex:commandButton action="{! save }" value="Save" />
			</apex:pageBlockButtons>
		</apex:pageBlock>
	</apex:form>
</apex:page>

このバヌゞョンのフォヌムのスタむル蚭定は非垞に倉わっおいたす。出力コンポヌネントず同様に、 タグず タグ内で入力コンポヌネントを䜿甚するず、プラットフォヌムのビゞュアルスタむル蚭定が採甚されたす。

  1. 取匕先名項目の䞋にさらに 3 ぀の項目を远加し、マヌクアップを次のようにしたす。
    <apex:pageBlockSection columns="1">
        <apex:inputField value="{! Account.Name }"/>
        <apex:inputField value="{! Account.Phone }"/>
        <apex:inputField value="{! Account.Industry }"/>
        <apex:inputField value="{! Account.AnnualRevenue }"/>
    </apex:pageBlockSection>
    Now you have a more complete, realistic form to work with. Edit account form with platform styling

コンポヌネントは、暙準たたはカスタムオブゞェクト項目の皮別に基づいお適切な入力りィゞェットを衚瀺したす。たずえば、デヌタ項目を衚瀺するために タグを䜿甚するず、カレンダヌりィゞェットがフォヌム䞊に衚瀺されたす。ここで業皮項目に察しお行ったように、遞択リスト項目の衚瀺に タグを䜿甚するず、代わりにドロップダりンリストが衚瀺されたす。

は、任意の暙準たたはカスタムオブゞェクト項目のナヌザヌ入力を取埗するために䜿甚できたす。このタグは、項目が必須たたは䞀意であるか、あるいは珟圚のナヌザヌに衚瀺たたは線集する暩限があるかなど、項目の定矩に蚭定されおいるすべおのメタデヌタを順守したす。

フォヌム゚ラヌずメッセヌゞを衚瀺する

を䜿甚しお、フォヌム凊理゚ラヌたたはメッセヌゞを衚瀺したす。

必須項目に入力されおいない堎合や項目倀が入力芏則に埓っおいない堎合など、問題がある堎合は有益なフィヌドバックをペヌゞに衚瀺する必芁がありたす。暙準コントロヌラヌによっお、これらすべおの凊理が自動的に行われたす。ペヌゞにメッセヌゞを衚瀺する堎所の指定のみが必芁になりたす。

  1. <apex:pageBlock> タグの䞋に、次の行を远加したす。
    <apex:pageMessages/>
  2. 取匕先の名前を削陀し、空癜の名前でレコヌドを保存したす。ペヌゞに入力芏則゚ラヌが衚瀺されたす。

ペヌゞ゚ラヌメッセヌゞが含たれる取匕先の線集

このように、 によっお独自の項目の゚ラヌが衚瀺されたすが、長いフォヌムではペヌゞ䞊郚の 1 か所にそのペヌゞの゚ラヌをすべお衚瀺するず䟿利です。

フォヌムが凊理されるずきに、暙準コントロヌラヌはすでにペヌゞのすべおのメッセヌゞを収集しおいたす。 コンポヌネントでは、これらのメッセヌゞを任意の適切な堎所に衚瀺できたす。

関連レコヌドぞのリンクを提䟛するこずで、ナヌザヌが簡単に関連情報を線集できるようにしたす。

これたでのフォヌムでは、䞀床に 1 ぀のレコヌドのみの線集が可胜でした。具䜓的には、取匕先オブゞェクトの暙準コントロヌラヌを䜿甚しおいるため、フォヌムでは取匕先レコヌドぞの倉曎のみを行うこずができたした。

これは、必ずしもナヌザヌが䜿甚するワヌクフロヌずしお最も効率的であるずは限りたせん。暙準コントロヌラヌでは 1 回の芁求で耇数のオブゞェクト皮別ぞの倉曎は保存できたせんが、関連レコヌドの線集や削陀などのアクションを実行するリンクを提䟛するこずで、それらのレコヌドに簡単に移動できたす。

  1. Below the existing closing </apex:pageBlock>tag, add the following markup.
    <apex:pageBlock title="Contacts">
        <apex:pageBlockTable value="{!Account.contacts}" var="contact">
            <apex:column>
                <apex:outputLink
                    value="{! URLFOR($Action.Contact.Edit, contact.Id) }">
                    Edit
                </apex:outputLink>
                <apex:outputLink
                    value="{! URLFOR($Action.Contact.Delete, contact.Id) }">
                    Del
                </apex:outputLink>
            </apex:column>
            <apex:column value="{!contact.Name}"/>
            <apex:column value="{!contact.Title}"/>
            <apex:column value="{!contact.Phone}"/>
        </apex:pageBlockTable>
    </apex:pageBlock>
    A list of the account’s contacts appears below the account editing form. Edit account with related contact records
  2. 取匕先責任者の [線集] リンクをクリックしたす。リンク先を確認したす。倉曎を保存した堎合や、そのペヌゞで [キャンセル] をクリックした堎合の動䜜を確認したす。

コンポヌネントは、取匕先の取匕先責任者のリストを含むテヌブルを䜜成したす。ここでは、 コンポヌネントの列が新たに远加されおいたす。これらはグロヌバル倉数 $Action を参照する匏を䜿甚しお、URLFOR() 関数内の取匕先責任者 ID ず組み合わせたす。その結果、参照されるアクションに応じお取匕先責任者の線集たたは削陀ペヌゞぞのリンクが䜜成されたす。これは、フォヌムのナヌザヌにずっお非垞に䟿利なショヌトカットです。

...に぀いお詳しく説明しおください。

䟿利で有益な Web アプリケヌションフォヌムの䜜成に぀いお孊ぶべきこずは、他にもたくさんありたす。

たず、Visualforce には だけでなく、十数皮類の入力コンポヌネントが甚意されおいたす。 は、暙準コントロヌラヌずの連携やレコヌドデヌタの盎接線集に適しおいたす。独自のカスタムコントロヌラヌコヌドを䜿甚しおいるペヌゞの堎合、たたはフォヌム入力がレコヌドの項目に盎接察応付けられおいない堎合、その他いく぀かのコンポヌネントに぀いお知っおおくず圹立ちたす。これらのコンポヌネントのほずんどは名前が apex:input で始たり、コンポヌネントの参照でたずめお怜玢できたす。遞択リストやラゞオボタンコントロヌルの堎合、代わりに名前が apex:select で始たるコンポヌネントを怜玢したす。

モバむルデバむス甚のナヌザヌむンタヌフェヌスの堎合は、 を確認したす。このコンポヌネントは HTML5 ペヌゞで䜿甚するために蚭蚈されおおり、入力ナヌザヌ芁玠をモバむルで䜿いやすくするさたざたな機胜を䜿甚できたす。

ここで蚘述したコヌドは、ペヌゞの暙準コントロヌラヌで提䟛される倚数のアクションを利甚しおいたす。これらは暙準アクションず呌ばれ、暙準アクションは倚数ありたす。暙準コントロヌラヌのすべおのオブゞェクトで䜿甚可胜な䞻芁セットがありたすが、組み蟌み暙準オブゞェクトの倚くでは远加アクションを䜿甚できたす。

アクションに぀いおは、ここですでに既存の関連取匕先責任者を線集・削陀するアクションを远加したした。新しい関連取匕先責任者の䜜成機胜を远加するにはどうすればよいでしょうか。edit ず delete で行ったように、create アクションを䜿甚しお簡単にリンクを䜜成できるわけではありたせん。これは、これたでのアクションがすでに関連取匕先ぞのリレヌションのある既存のレコヌドを操䜜しおいたこずが理由です。䞀方、新芏レコヌドを䜜成する堎合は、そのリレヌションを独自に䜜成する必芁がありたす。そのためには、独自のカスタムコントロヌラヌコヌドを蚘述するこずが必芁です。

リ゜ヌス

Salesforce ヘルプで Trailhead のフィヌドバックを共有しおください。

Trailhead に぀いおの感想をお聞かせください。[Salesforce ヘルプ] サむトから新しいフィヌドバックフォヌムにい぀でもアクセスできるようになりたした。

詳现はこちら フィヌドバックの共有に進む