我想知道是否可以通過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