2

我在前端模板中收到此错误,我的模板文件为空,当我尝试addFieldToTab. 我认为$has_many变量有问题。

我的代码如下:

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;
   }
}

错误 :

[用户错误] 未捕获的异常:Object->__call():“HasManyList”上不存在“fortemplate”方法,或者该方法不是公共的。

PasteBin 网址:https ://pastebin.com/YZJn3a4t

当我删除$has_many变量时,它工作得很好。在我的前端模板中是空的。

如何解决这个我不明白的错误?

4

1 回答 1

0

$has_many 数组应该是单数形式,而它的是复数形式。

使用您的示例,这应该是 'Category' => 'ProductCategories' (我从您对下面的 GridField 所做的事情中得到了这个)。

希望这可以帮助。

于 2017-12-26T19:15:36.603 回答