首先我使用的是SilverStripe 2.4.7版。我正在使用的DataObject与DataObjectManager和另一个DataObject之间有一个has_one关系。我想在DataObjectManager的摘要字段中显示DataObject的名称,但我不断收到以下错误。
未捕获异常:对象 - > __ call():“存储”上不存在'fortemplate'方法
我认为这是因为我有一个has_one关系,但我不确定。有没有人对我如何做到这一点有任何建议?
由于
答案 0 :(得分:8)
您收到该错误是因为“存储”,在摘要字段中返回Store对象。摘要字段不太清楚如何处理对象,因此它会检查它是否具有“forTemplate”方法,该方法通常会返回使用模板或纯字符串呈现的对象。
以下是两个选项:
1)在Store对象上创建forTemplate()方法,该对象返回Store的Title(或任何你想要的字段)。
OR
2)在具有DataObjectManager字段的对象上,创建一个返回Store标题的getter方法。即..
public function getStoreTitle(){
return $this->Store()->Title
}
然后在summary_fields中引用该方法,即......
public static $summary_fields = array(
'StoreTitle'
);