我想知道是否可以通过DataExtension添加Tab?传递给updateCMSFields的FieldList参数似乎将DataExtensions新字段输出到Details选项卡上。所以我的第一次尝试是在那里把我的领域:通过DataExtension添加Tab Silverstripe3
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 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添加标签的正确方法?
我编辑了答案:代码中存在拼写错误(addFieldsToTab而不是addFieldsToTabs) – jfbarrois 2013-02-13 18:16:11
感谢您花时间做出回复。当我将Root.Security传递给addFieldsToTab时,出现以下错误:Error at framework/forms/FieldList.php line 295:FieldList :: addFieldToTab()试图向对象'FieldList'添加一个标签 - 'Root'不存在。有什么想法吗? – 2013-02-13 22:33:36
我已经尝试了上面两个装饰器的片段:一个用于页面,另一个用于成员,并且在这两种情况下,我都可以看到一个名为security的新选项卡,以及预期的字段。也许你可以给我们更多的背景?你喜欢什么装饰?装饰的DataObject是否依赖脚手架来构建其字段集(或者在添加更多字段定义之前执行parent :: getCMSFields())?似乎主要的Tabset Root并不是以某种方式构建的,所以上游的东西可能不正确? – jfbarrois 2013-02-14 00:37:58