首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SilverStripe ModelAdmin单记录

SilverStripe ModelAdmin单记录
EN

Stack Overflow用户
提问于 2016-04-26 13:39:44
回答 1查看 663关注 0票数 3

最近,我学会了使用类ModelAdmin在后端创建自定义CMS部分,并使用private static $managed_models = array('Contact');将它们链接到名为Contact的DataObject。

我的目标是创建一个新的部分,名为“联系人”,其中包含一些联系方式(电话,电子邮件等)。这些是单数字段,而不是多个记录。

不幸的是,这种设置(链接到数据对象)在后端创建了一种GridField,它通过字段电话、电子邮件等创建多个“联系人”记录。

如何创建包含给定字段的单个实体的自定义CMS部分?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-26 23:06:56

与添加单个Client DataObject不同,我们可以使用 extension将这些变量存储在站点设置中。

为此,我们使用我们想要的变量和字段创建一个SiteConfig扩展:

mysite/code/extensions/CustomSiteConfig.php

代码语言:javascript
复制
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

代码语言:javascript
复制
SiteConfig:
  extensions:
    - CustomSiteConfig

我们现在可以在任何模板中使用这些变量:

代码语言:javascript
复制
<% if $SiteConfig.Phone %>$SiteConfig.Phone<% end_if %>
<% if $SiteConfig.Email %>$SiteConfig.Email<% end_if %>
<% if $SiteConfig.Address %>$SiteConfig.Address<% end_if %>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36866668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档