1

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

未捕获的异常:Object->__call():“Store”上不存在方法“fortemplate”

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

谢谢

4

1 回答 1

8

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

这里有两个选项:

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

或者

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

public function getStoreTitle(){
    return $this->Store()->Title
}

然后在 summary_fields 中参考该方法,即...

public static $summary_fields = array(
    'StoreTitle'
);
于 2012-09-13T00:22:44.587 回答