1

まず、SilverStripe のバージョン 2.4.7 を使用しています。使用している DataObject と DataObjectManager との間に has_one 関係があり、別の DataObject があります。DataObjectManager の概要フィールドに DataObject の名前を表示したいのですが、以下のエラーが発生し続けます。

キャッチされない例外: Object->__call(): メソッド 'fortemplate' が 'Store' に存在しません

has_one 関係にあるためだと思いますが、よくわかりません。これを行う方法について何か提案はありますか?

ありがとう

4

1 に答える 1

8

集計フィールドで Store オブジェクトが返されたときに「Store」が返されるため、そのエラーが発生しています。要約フィールドは、オブジェクトをどう処理するかを完全には認識していないため、「forTemplate」メソッドがあるかどうかを確認します。このメソッドは、通常、テンプレートでレンダリングされたオブジェクトまたは単なる文字列を返します。

次の 2 つのオプションがあります。

1) Store オブジェクトに forTemplate() メソッドを作成します。このメソッドは、Store の Title (または任意のフィールド) を返します。

また

2) DataObjectManager フィールドを持つオブジェクトで、ストアのタイトルを返す getter メソッドを作成します。つまり..

public function getStoreTitle(){
    return $this->Store()->Title
}

そして、summary_fields でそのメソッドを参照します。つまり...

public static $summary_fields = array(
    'StoreTitle'
);
于 2012-09-13T00:22:44.587 に答える