我正在扩展具有以下summary_fields的成员对象(显示在CMS的“安全性”部分中)。
private static $summary_fields = array(
'FirstName' => 'First Name',
'Surname' => 'Last Name',
'Email' => 'Email',
);
我如何删除' FirstName'和'姓氏'并使用数据扩展程序中的自定义字段替换它们:'全名'?
我如何更改电子邮件'阅读'电子邮件地址'?
我知道如何通过数据扩展添加summary_fields,但我不知道如何删除或更改它们。
答案 0 :(得分:5)
如果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
的内容。现在我们可以设置我们想要的标签。