【问题标题】:How to add a description to a model managed via ModelAdmin?如何向通过 ModelAdmin 管理的模型添加描述?
【发布时间】:2016-08-22 22:13:04
【问题描述】:

我有一个通过模型管理员管理的模型,我想在 gridfield 下方添加描述。通常这是通过设置->setDescription('Note in here')来完成的

当它通过ModelAdmin 管理时,你如何做到这一点?

<?php

class FormDropdownModelAdmin extends ModelAdmin {

    private static $managed_models = array(
        'HearAboutUsItem'
    );

    private static $url_segment = 'form-dropdown-items';

    private static $menu_title = 'Form Dropdown Items';

}

【问题讨论】:

    标签: silverstripe


    【解决方案1】:

    您可以在 ModelAdmin 上重载 getEditForm 方法并将描述应用于该字段。

    public function getEditForm($id = NULL, $fields = NULL) {
        $form = parent::getEditForm($id, $fields);
    
        $form->Fields()->fieldByName('HearAboutUsItem')
            ->setDescription('This is my description');
        return $form;
    }
    

    【讨论】:

    • 谢谢,这行得通。但是我现在已经向这个 Modeladmin 添加了多个模型,当我单击选项卡访问另一个模型时,它会抛出:Fatal error: Call to a member function setDescription() on a non-object - 我想我可以复制你的代码并在 fieldByName('AnotherModel ') - 但是没有用。关于如何在 ModelAdmin 中为每个托管模型添加描述的任何想法?
    • $this-&gt;modelClass替换'AnotherModel'
    • 这可行,但对每个模型显示相同的描述。如果您想为每个模型提供独特的描述,您如何做到这一点?
    • 几种方法:创建switch($this-&gt;modelClass) 并根据不同的案例陈述设置描述。您也可以使用语言文件系统。首先,在 en/lang.yml 文件中定义不同的字符串。您要查找的条目是 $entry = $this->modelClass.".CMSDescription"。您将使用_t($entry) 动态加载您的字符串。使用这个系统的一些例子在这里:docs.silverstripe.org/en/3.4/developer_guides/i18n/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    • 1970-01-01
    • 2012-01-31
    相关资源
    最近更新 更多