在DataObjectManager的摘要字段中显示DataObject名称

Mil*_*ter 1 php silverstripe

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

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

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

谢谢

Liv*_*rce 8

您收到该错误是因为"存储",在摘要字段中返回Store对象.摘要字段不太清楚如何处理对象,因此它会检查它是否具有"forTemplate"方法,该方法通常会返回使用模板或纯字符串呈现的对象.

这有两个选择:

1)在Store对象上创建forTemplate()方法,该对象返回Store的Title(或任何你想要的字段).

要么

2)在具有DataObjectManager字段的对象上,创建一个返回Store标题的getter方法.即..

public function getStoreTitle(){
    return $this->Store()->Title
}
Run Code Online (Sandbox Code Playgroud)

然后在summary_fields中引用该方法即...

public static $summary_fields = array(
    'StoreTitle'
);
Run Code Online (Sandbox Code Playgroud)