“下的新字段”;元数据选项卡";删除内容字段后-Silverstripe

“下的新字段”;元数据选项卡";删除内容字段后-Silverstripe,silverstripe,Silverstripe,从页面类型中删除内容字段后,添加到Root.Main的所有新字段将显示在元数据选项卡下。那太烦人了。有人能告诉我如何在元数据选项卡上获取新字段吗 这是我的密码 $fields->removeFieldsFromTab('Root.Main', array('Content')); $newsObjectField = new GridField('News', _t('Dict.NEWS', 'News'), $this->News(), CreateUns

从页面类型中删除内容字段后,添加到Root.Main的所有新字段将显示在元数据选项卡下。那太烦人了。有人能告诉我如何在元数据选项卡上获取新字段吗

这是我的密码

        $fields->removeFieldsFromTab('Root.Main', array('Content'));

    $newsObjectField = new GridField('News', _t('Dict.NEWS', 'News'), $this->News(), CreateUnsortableGrid::create());
    $fields->addFieldToTab('Root.Main', $newsObjectField);

Thx预先

addFieldToTab
默认情况下在列表末尾添加新字段

因此,您可以使用以下内容:

$newsObjectField = new GridField('News', _t('Dict.NEWS', 'News'), $this->News(), CreateUnsortableGrid::create());
$fields->fieldByName('Root')->fieldByName('Main')->insertAfter($newsObjectField, 'MenuTitle');
insertInsertBefore
的工作原理类似

此处
MenuTitle
可以是您想要的任何其他字段名

fieldByName
使用虚线语法,因此它也可以是
$fields->fieldByName('Root.Main')

编辑

@Zauberfisch
addFieldToTab
指出,可以使用第三个参数指定要在前面插入的字段:

$fields->addFieldToTab('Root.Main', $newsObjectField, 'Metadata');