フロントエンドテンプレートでこのエラーが発生しました。テンプレートファイルが空です。 addFieldToTab
。私は$has_many
変数に問題があると思います。silverstripオブジェクト - > __ call():メソッド 'fortemplate'が 'HasManyList'に存在しないか、メソッドが公開されていません
マイコードは以下の通りです:
class ProductsPage extends Page
{
private static $has_many = array (
'ProductCategories' => 'ProductCategories',
);
public function getCMSFields() {
$fields = parent::getCMSFields();
$fields->addFieldToTab('Root.Main', GridField::create(
'ProductCategories',
'Category',
$this->ProductCategories(),
GridFieldConfig_RecordEditor::create()
));
return $fields;
}
}
エラー:
[ユーザーエラー]キャッチされない例外:オブジェクト - > __()の呼び出し:メソッド 'fortemplate' 'に存在しません。 HasManyList '、またはメソッドが publicではありません。
ペーストビンのURL:https://pastebin.com/YZJn3a4t
私はそれが完璧に動作$has_many
変数を削除しています。私のフロントエンドのテンプレートは空です。
このエラーを修正するにはどうすればわかりませんか?
ありがとう、私は$ has_many配列キー名を変更し、それは仕事です。 'カテゴリ' => 'ProductCategories' – Sajid
リレーションを宣言する方法は実際に定義されています。「リレーションは、クラスの静的配列定義を通じて、 =>の形式で構築されます。 https://docs.silverstripe.org/en/4/developer_guides/model/relations/にアクセスしてください。たとえば、値は実際のクラスを参照します –