1
我想使用GridField來允許CMS用戶將信息(郵件列表)添加到相同頁面類型的文章(顯示),但是每個創建的新頁面都已填充信息從以前的文章。每個頁面上的新GridField項目 - SilverStripe
我認爲這可能與我設置Shows頁面類型和郵件列表DataObject之間的關係的方式有關,但我無法弄清楚我需要爲每個新的顯示頁面有它自己的空白GridField作爲郵件列表是不一樣的每個節目...
我試過很多組合$ has_one,$ has_many & $ many_many上的兩個文件,但沒有得到它的工作方式我需要它是爲每個顯示頁面都有它自己的GridField(郵件列表)...
我現在的代碼是:
Shows.php
private static $has_many = array(
'MailingLists' => 'MailingList'
);
...
$config = GridFieldConfig_RelationEditor::create();
$gridField = new GridField('MailingList',
'Shows Mailing List',
new DataList('MailingList'),
$config
);
$fields->addFieldsToTab('Root.Content.MailingList', array(
$gridField
));
MailingList.php
class MailingList extends DataObject {
private static $db = array(
'Title' => 'Varchar(25)',
'Description' => 'Varchar(55)'
);
private static $has_one = array(
'Shows' => 'Shows'
);
}
哦。我的。神!我有一天嘗試了這一點,並得到了服務器錯誤,這就是爲什麼我恢復使用新的DataList()...你能解釋它爲什麼這次工作? $ this-> MailingLists()是否鏈接到$ has_many位? 感謝您的幫助:) – Freemium
是'$ this-> MailingLists()'鏈接到'$ has_many''MailingLists'關係。 – 3dgoo
這是很好的知道,我必須嘗試使用'$ this-> MailingLists()',而我有關係設置爲'$ has_one'這就是爲什麼它不適合我,我認爲這不是什麼問題是。感謝您清除 – Freemium