В Silverstripe 4 стандартная кнопка "Добавить" GridField ничего не делает
Я пытаюсь использовать компонент GridField в первый раз. Я добавил кнопку "Добавить", используя GridFieldConfig_RecordEditor следующим образом:
class AdvertisersPage extends Page
{
//...
public function getCMSFields()
{
$fields = parent::getCMSFields();
$advertiserAccounts = AdvertiserAccount::get();
$fields->addFieldToTab('Root.Advertisers',
$gridField = new GridField(
'Advertisers',
'All advertisers',
$this->Advertisers(),
GridFieldConfig_RecordEditor::create()
)
);
return $fields;
}
}
Но кнопка ничего не делает, кроме изменения URL в браузере с
админ / страницы / редактировать / шоу /7
в
админ / страницы / редактировать /EditForm/7/ поле / Рекламодатели / пункт / новый
Вот связанный класс DataObject:
class AdvertiserAccount extends DataObject
{
//...
private static $has_one = [
'AdvertisersPage' => AdvertisersPage::class,
];
public function getCMSFields()
{
$fields = FieldList::create(
TextField::create('contactNumber'),
TextField::create('nickname')
);
return $fields;
}
}
Мне нужен ваш совет о том, что я должен посмотреть, чтобы решить проблему.
1 ответ
Это чрезвычайно странная ошибка.
Я провел несколько экспериментов и переименовал соответствующие классы. Я обнаружил, что проблема возникает только тогда, когда имя первого параметра конструктора GridField является одним из следующих: "Adv", "Advert", "Advertise", "Advertiser" и "Advertisers". В проекте у меня нет классов с такими именами. Полнотекстовый поиск по всем файлам проекта не дал результатов.
Итак, я решил проблему, просто переименовав параметр, но что это было?