В 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". В проекте у меня нет классов с такими именами. Полнотекстовый поиск по всем файлам проекта не дал результатов.

Итак, я решил проблему, просто переименовав параметр, но что это было?

Другие вопросы по тегам