1

我想知道是否可以通过 DataExtension 添加选项卡?传递给 updateCMSFields 的 FieldList 参数似乎将 DataExtensions 新字段输出到详细信息选项卡上。所以我的第一次尝试是把我的领域推到那里:

public function updateCMSFields(FieldList $fields)  {  
    $secureFilesTab = $fields;
    $secureFilesTab->push(new HeaderField(_t('SecureFiles.GROUPACCESSTITLE', 'Group Access')));
    $secureFilesTab->push(new TreeMultiselectField('GroupPermissions', _t('SecureFiles.GROUPACCESSFIELD', 'Group Access Permissions')));
}    

这很好用,但是当我保存一个值时,CMS 会将 Tree_View 和 List_View 选项卡中的数据加载到详细信息选项卡上。下面的评论中提到的事实是,这是文件夹的 DataExtension。

然后我尝试使用 FormScaffolder 中的代码添加一个新选项卡:

public function UpdateCMSFields(FieldList $fields) {
    $fields->push(new TabSet('Root', $secureFilesTab = new Tab('Security')));
$secureFilesTab->setTitle(_t('SiteTree.TABSECURITY', 'Security'));
}

这会将选项卡图标全部更改为 Tree_View 图标,并将我的新 DataExtension 字段放在所有选项卡上。

通过 DataExtension 添加选项卡的正确方法是什么?

4

2 回答 2

3

您可以使用 addFieldsToTab() 将新字段添加到现有选项卡或新选项卡,就像在 DataObjects 上使用 getCMSFields() 一样。

public function updateCMSFields(FieldList $fields)  {  
    if ($this->owner->ClassName != 'Folder' ){
        $fields->addFieldsToTab('Root.Security', array(
            new HeaderField(_t('SecureFiles.GROUPACCESSTITLE', 'Group Access')),
            new TreeMultiselectField('GroupPermissions', _t('SecureFiles.GROUPACCESSFIELD', 'Group Access Permissions'))
        ));     
    }
    if ($this->owner->ClassName == 'Folder' ){
        $fields->push(new HeaderField(_t('IMAFOLDER', 'I am a folder')));       
    }
}  

如果未找到安全选项卡,将通过传递 'Root.Security' 作为第一个参数来创建。点表示法用于创建 tabset 和 tabs 的嵌套结构。不可能简单地推送具有相同名称(“Root”)的新标签集,因为已经存在这样的标签集。如果您需要对选项卡进行进一步操作,可以使用 $fields->findOrMakeTab('TabSet.Tab') 访问它们的实例,即 $fields->findOrMakeTab('Root.Content');

于 2013-02-13T17:57:14.587 回答
1

我也有问题在成员扩展中启用选项卡,在功能

public function updateCMSFields(FieldList $fields)

终于在我删除了字段顺序后它开始工作了

$fields->changeFieldOrder($order);

试试看,也许对你有帮助。

于 2014-10-02T14:19:00.957 回答