我想知道是否可以通过DataExtension添加Tab?传递给updateCMSFields的FieldList参数似乎将DataExtensions新字段输出到Details选项卡上。所以我的第一次尝试是将我的菲尔兹推到那里:
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选项卡中的数据加载到Details选项卡上。下面的评论中提到的是这是一个DataExtension for Folder。
然后我尝试使用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添加标签的正确方法是什么?
答案 0 :(得分: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和制表符的嵌套结构。不可能简单地推送具有相同名称(“Root”)的新tabset,因为已经存在这样的tabset。如果您需要对选项卡进行进一步操作,可以使用$ fields-> findOrMakeTab('TabSet.Tab')访问他们的实例,即$ fields-> findOrMakeTab('Root.Content');
答案 1 :(得分:1)
我也有问题在功能
中启用成员扩展中的标签public function updateCMSFields(FieldList $fields)
最后,我删除了字段顺序后开始工作
$fields->changeFieldOrder($order);
试试吧,也许它可以帮助你。