silverstrip对象 - > __ call():方法' fortemplate' ' HasManyList'上不存在,或者该方法不公开

时间:2017-12-26 14:31:47

标签: php silverstripe has-many silverstripe-4

我在前端模板中收到此错误我的模板文件为空, 当我尝试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;
   }
}

错误:

  

[User Error] Uncaught Exception:Object-> __ call():方法   ' fortemplate' ' HasManyList'上不存在,或者方法不存在   公共

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

当我删除$has_many变量时,它完美无缺。在我的前端模板是空的。

如何修复此错误,我不明白?

1 个答案:

答案 0 :(得分:0)

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

使用您的示例,这应该是'Category'=> 'ProductCategories'(我从你正在使用的GridField中获得了这个)。

希望这有帮助。