如何自定义Silverstripe 3.0 ModelAdmin

时间:2013-11-12 01:42:29

标签: php silverstripe

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

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

  2. 我有一个很好的关系。我想隐藏“链接到现有”的能力,以便不能按照以下方式搜索其他“技能”。

  3. 我在模型中有以下内容:

    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(             'CharacterSkills',             '角色技巧',             $这 - > CharacterSkills(),             $配置         );

1 个答案:

答案 0 :(得分:4)

关于#1:

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

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

不要忘记随后刷新缓存(在网址中添加'?flush = All')。

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

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