[salesforce]カスタムボタン、カスタムリンクの内容のソースに、指定したいVisualforceページがでてこない
Salesforceのオブジェクトには、カスタムボタンカスタムリンクを作成する機能があります。
こんなような画面ですね。
ここで「内容のソース」というところで、このカスタムボタン、カスタムリンクのリンク先を指定することができます。
指定できるのは以下の4つです。
- URL
URLを直指定してリンク先を設定できます。http://yahoo.comとかにもできますし、/apex/hogehoge?id=xxxxxxみたいにSalesforce内のURLを指定することもできます。 - カスタムSコントロール
開発→Sコントロールで作成したSコントロールページを指定できます。 - OnClick JavaScript
クリック時に実行するJavaScriptを指定できます。 - Visualforceページ
開発→ページで作成したVisualforceページを指定できます。
ここでよく遭遇する問題として、標題にもある「カスタムボタン、カスタムリンクの内容のソースに、指定したいVisualforceページがでてこない」という問題があります。
たとえば「取引先(Account)」オブジェクトのカスタムボタン、カスタムリンクにVisualforceページ割り当てを行いたい場合、そのVisualforceページのコントローラでそのオブジェクトのスタンダードコントローラを設定していないとドロップダウン項目に指定したいvisualforce ページが出てきません。
[php]
<apex:page controller="hogehogeController" tabStyle="Account">
[/php]
これが指定したいVisualforceページだとしたら
[php]
<apex:page standardController="Account" extensions="hogehogeController" tabStyle="Account">
[/php]
こんな感じに書き換える必要があります。
なお、extentions=”apexクラス名” とするとそのクラスのコンストラクタに
[php]
public hogehogeController(ApexPages.StandardController controller) {
}
[/php]
を入れる必要が出てきます(SF側のアラートをクリックすると自動生成されます)。
これがめんどくさいっていう場合は、内容のソースで「URL」を選択して指定したいVisualforceページのリンクを直指定してやれば設定することもできます。こっちのほうが楽チン。
[php]
/apex/hogehogeController
[/php]
こんなかんじでURLとして記述。