gpt4 book ai didi

php - 在 Silverstripe 中扩展对象时如何修改或删除现有的 Summary_fields?

转载 作者:行者123 更新时间:2023-12-03 19:48:32 24 4
gpt4 key购买 nike

我正在扩展具有以下summary_fields(显示在CMS 的安全部分中)的Member 对象。

private static $summary_fields = array(
'FirstName' => 'First Name',
'Surname' => 'Last Name',
'Email' => 'Email',
);

如何删除“名字”和“姓氏”并将其替换为数据扩展中的自定义字段:“全名”?

如何将“电子邮件”更改为“电子邮件地址”?

我知道如何通过数据扩展添加summary_fields,但我不知道如何删除或更改它们。

最佳答案

如果 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;
}
}

我们似乎也无法更改现有字段的字段标签,例如电子邮件。我们可以做的是转换一个新字段 EmailAddress ,它将返回 Email 的内容。现在我们可以设置我们想要的标签了。

关于php - 在 Silverstripe 中扩展对象时如何修改或删除现有的 Summary_fields?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24418459/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com