프런트 엔드 템플릿에서이 오류가 발생합니다. 템플릿 파일이 비어 있습니다. addFieldToTab
. 나는 $has_many
변수에 문제가 있다고 생각한다.silverstrip Object -> __ call() : 'fortemplate'메서드가 'HasManyList'에 없거나 메서드가 public이 아닙니다.
내 코드는 다음과 같습니다 :
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 '이거나 메서드가 공개가 아닙니다.
페이스트 빈의 URL은 : 내가 $has_many
변수를 제거입니다 때 https://pastebin.com/YZJn3a4t
그것은 완벽하게 작동합니다. 내 프런트 엔드 템플릿이 비어 있습니다.
어떻게이 오류를 해결할 수 있습니까?
감사합니다. $ has_many 배열 키 이름을 변경 했으므로 작동합니다. '범주'=> 'ProductCategories'. – Sajid
관계를 선언하는 방법에 대한 실제 정의가 있습니다. "관계는 클래스의 정적 배열 정의를 통해 => 형식으로 작성됩니다." https://docs.silverstripe.org/en/4/developer_guides/model/relations/. 예 : 값은 실제 클래스를 참조합니다. –