在 SilverStripe 的 CMS 中,我想删除页面中的
Content
选项卡。我可以这样做:
$fields->removeFieldsFromTab('Root.Content.Main', 'Content');
然后我想创建自己的自定义选项卡:
$fields->addFieldToTab('Root.Content.MyTab', $myField);
但是,通过添加我自己的自定义选项卡,它会带回
Content
选项卡。
另一个选项只是将
MyTab
设置为默认的“向上”选项卡。这可能吗?
要删除 SilverStripe 2.4 中的
Content
选项卡:
$fields->removeFieldFromTab('Root.Content', 'Main');
并将字段添加到名为
MyTab
的选项卡中:
$fields->addFieldToTab('Root.Content.MyTab', $myField);
要删除 SilverStripe 3.1 中的
Content
选项卡:
$fields->removeFieldFromTab('Root', 'Main');
并将字段添加到名为
MyTab
的选项卡中:
$fields->addFieldToTab('Root.MyTab', $myField);
删除
Content
选项卡意味着您无法控制页面标题。
removeFieldsFromTab
从该 Tab
中的 TabSet
/FieldList
中删除多个字段。它采用字段名称数组作为第二个参数。
removeFieldFromTab
从此 Tab
内的 TabSet
/FieldList
中删除单个字段。它采用字符串字段名称作为第二个参数。
在您的情况下,您想使用
removeFieldFromTab
而不是 removeFieldsFromTab
。
我知道这个问题很老了,但我也遇到了同样的问题,并且我已经解决了。
在我写的 getCMSFields() 方法中
$fields = parent::getCMSFields();
$fields->removeByName('XXX'); //this line removes tab
return $fields;
其中“XXX”是我的选项卡“Root.XXX”的名称
我希望它能对某人有所帮助。
对于 Silverstripe 5.x:
$fields->removeFieldFromTab('Root.Main', 'Content');