2016-04-04 2 views
1

Я пытаюсь использовать GridField, чтобы пользователи CMS могли добавлять информацию (списки рассылки) к статье того же типа (Показывает), но каждая новая страница, которая была создана, уже заполнена информацией из предыдущих статей.Новый элемент GridField на каждой странице - SilverStripe

Я думаю, что это может иметь какое-то отношение к тому, как я установил отношения между типом страницы «Показания» и «Объект данных рассылки», но я не могу понять, что мне нужно сделать для каждой новой страницы показа у меня есть собственный пустой 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' 
    ); 
} 

ответ

3

С помощью этого кода

$gridField = new GridField('MailingList', 
    'Shows Mailing List', 
    new DataList('MailingList'), 
    $config 
); 

вы выбираете все записи в таблице MailingList с new DataList('MailingList'), но вы должны использовать соответствующий список записей с $this->MailingLists()

$gridField = new GridField('MailingList', 
    'Shows Mailing List', 
    $this->MailingLists(), 
    $config 
); 
+0

Oh. Мои. Бог! Я попробовал это на днях и получил ошибку сервера, поэтому я вернулся к использованию нового DataList() ... Не могли бы вы объяснить, почему он работал на этот раз? Связана ли $ this-> MailingLists() с битом $ has_many? Спасибо за помощь :) – Freemium

+0

Да '$ this-> MailingLists()' ссылается на отношения '$ has_many' MailingLists'. – 3dgoo

+0

Полезно знать, я, должно быть, попытался использовать '$ this-> MailingLists()', в то время как у меня было отношение, заданное как '$ has_one', поэтому для меня это не сработало, и я предположил, что это не то, что выпуск был. Спасибо за очистку, что до – Freemium

Смежные вопросы