在Data ObjectManager的摘要字段中显示数据对象名称

时间:2012-09-12 14:49:02

标签: php silverstripe

首先我使用的是SilverStripe 2.4.7版。我正在使用的DataObject与DataObjectManager和另一个DataObject之间有一个has_one关系。我想在DataObjectManager的摘要字段中显示DataObject的名称,但我不断收到以下错误。

未捕获异常:对象 - > __ call():“存储”上不存在'fortemplate'方法

我认为这是因为我有一个has_one关系,但我不确定。有没有人对我如何做到这一点有任何建议?

由于

1 个答案:

答案 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'
);