我最近学会了使用类ModelAdmin在后端创建自定义CMS部分,并使用私有静态$managed_models = array(‘Contact’)链接它们;到名为Contact的DataObject.
我的目标是创建一个名为“联系人”的新部分,其中包含一些联系方式(电话,电子邮件等).这些是单数字段,而不是多个记录.
不幸的是,这个设置(链接到dataobject)在后端创建了一种GridField,它创建了多个“联系人”记录,其中包括电话,电子邮件等字段.
如何创建包含给定字段的单个实体的自定义CMS部分?
解决方法:
我们可以使用SiteConfig
extension将这些变量存储在站点设置中,而不是添加单个Client DataObject.
为此,我们使用我们想要的变量和字段创建SiteConfig扩展:
mysite的/代码/扩展/ CustomSiteConfig.php
class CustomSiteConfig extends DataExtension {
private static $db = array(
'Phone' => 'Varchar(255)',
'Email' => 'Varchar(255)',
'Address' => 'Varchar(255)'
);
public function updateCMSFields(FieldList $fields) {
$fields->addFieldToTab('Root.Contact', TextField::create('Phone'));
$fields->addFieldToTab('Root.Contact', TextField::create('Email'));
$fields->addFieldToTab('Root.Contact', TextField::create('Address'));
}
}
我们激活扩展:
mysite的/ _config / config.yml
SiteConfig:
extensions:
- CustomSiteConfig
我们现在可以在任何模板中使用变量:
<% if $SiteConfig.Phone %>$SiteConfig.Phone<% end_if %>
<% if $SiteConfig.Email %>$SiteConfig.Email<% end_if %>
<% if $SiteConfig.Address %>$SiteConfig.Address<% end_if %>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。