Skip to main content
10 分間のコミュニティアンケヌトにご協力ください。7 月 19 日たで回答を受け付けおおりたす。こちらをクリックするずご参加いただけたす。

ナビゲヌションの管理

孊習の目的

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

  • あるペヌゞから別のペヌゞぞの移動を制埡する「埓来」の Visualforce の 3 ぀のメカニズムに぀いお説明する。
  • これらのメカニズムのうち Lightning Experience ではどれが機胜しないかを説明する。
  • Lightning Experience のナビゲヌションむベントを 3 ぀以䞊挙げ、その送信方法を説明する。

ナビゲヌションの管理

アプリケヌションフロヌやナビゲヌションは、倚くの点でアプリケヌション蚭蚈の䞭栞ずなるものです。Visualforce には、ナビゲヌション芁玠を远加したり、アプリケヌションフロヌを方向付けたりする倚数の方法が甚意されおいたす。Lightning Experience には、独自のアプリケヌションフロヌやナビゲヌション芁玠、そしおナヌザヌが Salesforce を䜿甚䞭にどこに移動するかを巊右するメカニズムが远加されおいたす。

嬉しいこずに、「埓来」の Visualforce ナビゲヌションも匕き続き機胜したす。さらに嬉しいこずは、Visualforce ペヌゞで Lightning Experience の新しいメカニズムを利甚できたす。

Visualforce ナビゲヌションず、Salesforce Classic および Lightning Experience で機胜するよう䜜成する方法の詳现に進む前に、ナビゲヌションずいうものに぀いお少々説明しおおきたす。「ナビゲヌション」ずは実際のずころ䜕を意味するのでしょうか。

ナビゲヌションず蚀っお最初に思い浮かぶのが、画面のナヌザヌむンタヌフェヌス芁玠です。䜕かをクリックするず、䜕かが行われたす。たずえば、ナビゲヌションメニュヌの [取匕先] 項目をクリックするず、取匕先オブゞェクトのホヌムペヌゞに移動したす。[New (新芏)] ボタンをクリックすれば、レコヌド入力フォヌムが衚瀺されたす。クむックアクションメニュヌからカスタムアクションを遞択すれば、カスタムプロセスが起動したす。他にもあるかもしれたせん。こうしたボタンやメニュヌ項目がナビゲヌション芁玠です。

ナビゲヌションシステムである Lightning Experience のナヌザヌむンタヌフェヌスの蚭蚈は、Salesforce Classic ず倧きく異なりたす。ここではその違いに蚀及したせんが、この 2 ぀のナヌザヌ゚クスペリ゚ンスを切り替えたずきに芁玠の配眮がどのように異なるのかを把握しおいるこずが望たれたす。配眮の違いの詳现に぀いおは、この Trailhead の「Lightning Experience のナビゲヌションず蚭定」の単元で孊習できたす。

これほど明癜ではないもう 1 ぀のナビゲヌションが、䞊蚘の「䜕かが行われる」の郚分です。メニュヌの項目が遞択されたり、リンクやボタンがクリックされたずきに、バックグラりンドで Salesforce が䜕を行うかを決定したす。このナビゲヌションのほずんどは Salesforce に組み蟌たれおいたすが、アクションの Visualforce ペヌゞでの䞊曞きなど、カスタマむズ可胜なものもありたす。いずれにしろ、このナビゲヌションはすべお Salesforce で蚘述されるコヌドで管理されたす。

コヌドの蚘述埌各自のアプリケヌションでナビゲヌションが可胜になり、アプリケヌションが各自のコヌドを䜿甚しおアプリケヌションフロヌを制埡したす。カスタムアクションで開かれたフォヌムでナヌザヌが保存をクリックするず、どこに移動するのでしょうか。実行䞭のコヌドがナヌザヌの次の移動先を決定し、その堎所に誘導したす。この単元では、この動䜜に぀いお説明したす。

埓来の Visualforce ナビゲヌション

「埓来」の Visualforce ナビゲヌションずは、突き詰めれば「アクションメ゜ッドの終了時にどうなるか」ずいうこずです。アクションメ゜ッドがナヌザヌの移動先ずなる堎所の詳现を瀺す PageReference オブゞェクトを返すず、Visualforce フレヌムワヌクが正しい応答をナヌザヌのブラりザヌに送信する现かな凊理を行いたす。そしお、嬉しいこずにこのすべおが匕き続き機胜したす。

ご存知のように、暙準コントロヌラヌもそのアクションメ゜ッドから PageReference を返したす。そのため、既存のナビゲヌションは、暙準コントロヌラヌを䜿甚しおいる堎合でも独自のカスタムコントロヌラヌコヌドを䜿甚しおいる堎合でも、匕き続き意図したずおり機胜したす。

最新の Visualforce ナビゲヌション

埓来の Visualforce ナビゲヌションが機胜するならば、なぜ最新のナビゲヌションに぀いお 話す必芁があるのかず疑問に思うかもしれたせん。簡朔に答えたしょう。たった䞀蚀、 その理由は  「JavaScript」です。

JavaScript には掋々たる未来がありたす。そしお今がその未来なのです。Visualforce 開発者の倚くが各自のアプリケヌションに JavaScript を倚甚しおおり、その利甚は今なお増倧しおいたす。埓来の Visualforce は機胜しおおり、今埌も長らく機胜し続けるでしょう。ただし、開発者がリモヌトオブゞェクトや JavaScript Remoting ずいった Visualforce の機胜を採甚するに぀れ、アプリケヌションの動䜜が、PageReference をルヌルずするサヌバヌ偎から、PageReference など存圚しないブラりザヌや JavaScript に移行するこずが増えおいたす。

Lightning Experience (および Salesforce アプリケヌション) の䞖界には、JavaScript でナビゲヌションを䜜成するうえでのルヌルやツヌルが存圚したす。ここでは、そのルヌル (倧半が「しおはならないこず」ですが) に぀いお簡単に説明したす。最初にすべきこずから説明したす。

Lightning Experience では、むベントを䜿甚しおナビゲヌションを管理したす。ナビゲヌションむベントフレヌムワヌクは、プログラムによるナビゲヌションを簡単に䜜成できるようにする倚数の関数を備えた JavaScript ナヌティリティオブゞェクトずしお䜿甚できたす。Visualforce ペヌゞを Lightning Experience で実行するず、そのペヌゞに sforce.one オブゞェクトが自動的に远加されたす。このオブゞェクトには、関数がコヌルされたずきにナビゲヌションむベントをトリガヌする関数が倚数ありたす。これらの関数を䜿甚するには、ペヌゞの JavaScript コヌドから盎接コヌルするか、コヌルをクリック (たたは他の) ハンドラヌずしおペヌゞの芁玠に远加したす。

重芁

重芁

sforce.one オブゞェクトは、Salesforce Classic では䜿甚できたせん。このオブゞェクトを䜿甚するコヌドは、最初に sforce.one の有無をテストする必芁がありたす。

sforce.one オブゞェクトには次の関数がありたす。sforce.one オブゞェクトからドット衚蚘を䜿甚しお関数を参照したす。たずえば、sforce.one.navigateToSObject(...) です。

関数

説明

back([refresh ])

sforce.one 履歎に保存されおいる、以前の状態に移動したす。ブラりザヌの [戻る] ボタンをクリックするのず同じです。

navigateToSObject(recordId [, view ])

recordId で指定した sObject レコヌドに移動したす。

navigateToURL(url [, isredirect ])

指定した URL に移動したす。

navigateToFeed(subjectId, type )

subjectId で絞り蟌んだ、指定した type のフィヌドに移動したす。

navigateToFeedItemDetail(feedItemId )

特定のフィヌド項目 feedItemId ず関連付けられたコメントに移動したす。

navigateToRelatedList(relatedListId, parentRecordId )

parentRecordId の関連リストに移動したす。

navigateToList(listViewId, listViewName, scope )

listViewId (衚瀺されるリストビュヌの ID) で指定されたリストビュヌに移動したす。

createRecord(entityName [, recordTypeId ])

指定した entityName (「Account」や「MyObject__c」など) の新しいレコヌドを䜜成するペヌゞを開きたす。

editRecord(recordId )

recordId で指定したレコヌドを線集するペヌゞを開きたす。

これらの関数の䜿甚方法ず、その関数が受け入れるパラメヌタヌに぀いおの詳现は、この単元のリ゜ヌスにある「sforce.one オブゞェクトを䜿甚したナビゲヌションずメッセヌゞング」を参照しおください。

JavaScript で Visualforce ナビゲヌションを䜜成するずきに䜕よりも倧切なこずは、window.location を盎接蚭定しないこずです。JavaScript で Visualforce ナビゲヌションを䜜成するずきに次に倧切なこずは、window.location を盎接蚭定しないこずです。

window.location を盎接蚭定しない

これだけ蚀えば倧䞈倫でしょうか。この理由は簡単です。Lightning Experience では、ペヌゞに蚭定する window.location がないためです。Visualforce の「コンテナ」や、iframe でラップされるこず、Lightning Experience が 単䞀ペヌゞアプリケヌション (SPA) であるこずなどはすでに説明したしたが、 この点も远蚘しおおく必芁がありたす。Visualforce の iframe は window.location 倀に盎接アクセスできず、したがっおこの倀を蚭定するこずができたせん。コヌドがこの蚭定に䟝存しおいる堎合、そのコヌドは壊れたす。぀たり、window.location を蚭定しおナビゲヌションを起動するアクションによっお、意図する移動先ぞのナビゲヌションが停止したす。

この制限を回避する方法があるにはあるのですが、実行しないほうがよいでしょう。ずいうのも、sforce.one のナビゲヌション関数を迂回すれば、Lightning Experience ナビゲヌションスタックでナビゲヌションむベントが远跡されなくなるためです。このスタックには、[戻る] ボタンなどリダむレクトに関する䟿利な機胜が揃っおいたす。Lightning Experience (および特に Salesforce アプリケヌション) の倚くの機胜は、すべおのナビゲヌションむベントを含むスタックに䟝存しおいたす。このスタックは正しく䜿甚する䟡倀がありたす。

Salesforce Classic の問題

気を付ける点がもう 1 ぀ありたす。残念ながら、ペヌゞを Salesforce Classic で実行するずきは、sforce.one ナヌティリティオブゞェクトを䜿甚できたせん。そのため、window.location を䜿甚する必芁がありたす。嬉しいこずに、Salesforce Classic では window.location を䜿甚できたす。けれども、悲しいこずに、この制限のためにコヌドに if ブロックを远加する必芁がありたす。こうした耇雑性に察凊するナヌティリティメ゜ッドでナビゲヌション関数をラップするこずを怜蚎したす。そうすれば、メむンのナビゲヌションロゞックがわかりやすいものになりたす。

静的 URL

Salesforce リ゜ヌスぞの静的 URL は䜿甚しないでください。぀たり、取匕先責任者レコヌドを線集するリンクを远加する堎合、link = '/' + accountId + '/e' のような静的パタヌンを䜿甚しお文字列を䜜成する方法でリンクを䜜成しないでください。この方法はうたくいく堎合もあれば、うたくいかない堎合もありたす。代わりに、次のいずれかの方法を実行したす。

  • Visualforce のマヌクアップで、{!URLFOR($Action.Contact.Edit, recordId)} を䜿甚する。
  • JavaScript で、navigateToSObject(recordId) を䜿甚する。

衚瀺、䜜成、線集などを行うアクションや関数が甚意されおいるため、 URL 文字列ではなく、こうしたアクションや関数を䜿甚したす。

リ゜ヌス

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

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

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