【问题标题】:How to customize Silverstripe 3.0 ModelAdmin如何自定义 Silverstripe 3.0 ModelAdmin
【发布时间】:2013-11-12 01:42:28
【问题描述】:

我想在 ModelAdmin 上做一些小的自定义。

  1. 我想将“添加”按钮上的文本更改为与原始 DataModel 不同的文本。

  2. 我有一个 has_many 关系。我想隐藏“链接到现有”的功能,这样就无法按照下面的方法搜索其他“技能”。

我在模型中有以下内容:

public function getCMSFields() {

    ...

    $characterSkillsField = new GridField(
                'CharacterSkills',
                'Character Skills',
                $this->CharacterSkills(),
                GridFieldConfig_RelationEditor::create()
            );

    $fields->addFieldToTab('Root.CharacterSkills', $characterSkillsField);

    ...

}

回答 #2:

// 添加关系编辑器。

$config = GridFieldConfig_RelationEditor::create();

// 移除搜索和链接到其他技能的能力。

$config->removeComponentsByType('GridFieldAddExistingAutocompleter');

$characterSkillsField = new GridField( '角色技能', '角色技能', $this->CharacterSkills(), $配置 );

【问题讨论】:

    标签: php silverstripe


    【解决方案1】:

    关于#1:

    将以下内容添加到由 GridField 管理的模型类(例如“CharacterSkill”):

    private static $singular_name = 'foo';
    private static $plural_name = 'bar';
    

    不要忘记之后刷新缓存(将 '?flush=All' 添加到 url)。

    前面会将按钮名称设置为“添加 foo”,但也可以使用以下命令设置您自己的按钮标题:

    $config = GridFieldConfig_RelationEditor::create();
    $addButton = $config->getComponentByType('GridFieldAddNewButton');
    $addButton->setButtonName('my button name');
    

    【讨论】:

    • 太棒了,谢谢。问:参考文档中是否有详细说明这些项目的好地方?
    • doc.silverstripe.org/framework/en/reference/grid-field 有一些关于 GridField 的信息,但我在那里找不到关于添加按钮的任何信息;您经常需要通读源代码才能找到漂亮的细节;)另外,当它适合您时,请接受答案,因此问题被标记为已解决 - 对我们所有人都有帮助:我们的声誉,其他人的清晰度:)
    猜你喜欢
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-16
    • 2020-03-24
    • 2021-04-14
    • 2017-09-30
    相关资源
    最近更新 更多