如果DataObject
已设置$summary_fields
我们不能通过扩展从其中删除字段。分机的$summary_fields
与原始$summary_fields
合并。
要停止合并$summary_fields
,我们需要重写DataObject的updateSummaryFields()
函数。相反,我们将使updateSummaryFields()
函数仅返回分机的$summary_fields
。
class MemberExtension extends DataExtension {
private static $summary_fields = array(
'FullName' => 'Full Name',
'EmailAddress' => 'Email Address'
);
private static $casting = array(
'FullName' => 'Text',
'EmailAddress' => 'Text'
);
public function updateSummaryFields(&$fields) {
$fields = Config::inst()->get($this->class, 'summary_fields');
}
public function getFullName() {
return $this->owner->FirstName . ' ' . $this->owner->Surname;
}
public function getEmailAddress() {
return $this->owner->Email;
}
}
它似乎也不能改变现有字段的字段标签,如Email
。我们可以替代的是投射一个新字段EmailAddress
,它将返回Email
的内容。现在我们可以设置我们想要的标签。
谢谢@ 3dgoo值得注意的是任何看这个的人。如果我使用updateSummaryFields覆盖,好像我不得不重新添加要添加到$ summary_fields的任何对象字段。 例如:将FirstName添加到$ summaryfields会导致空白字段。但添加ShowFirstName并设置getShowFirstName:return $ this-> owner-> FirstName;作品。 – BaronGrivet
@Tama真的很有趣。感谢分享。 – 3dgoo
感谢您的支持,我不断向成员添加更多内容,但无法使用$ summary_fields进行覆盖。 – Mediabeastnz