Автоматическая инициализация поддерживается только для корневых форм. Вы должны установить опцию «auto_initialize» в false на поле

0

У меня возникла следующая ошибка в моем проекте Symfony2:

Автоматическая инициализация поддерживается только в корневых формах. Вы должны установить для параметра auto_initialize значение false в поле "descriptionEN".

Я использую пакет администрирования Sonata. Я хотел бы заполнить текстовое поле в своей форме перед тем, как передать форму. Поэтому я использую событие формы PRE_SET_DATA. В Sonata у вас есть только prePersist & preUpdate, поэтому я делаю это так:

// Fields to be shown on create/edit forms
protected function configureFormFields(FormMapper $formMapper)
{
    $formMapper
        ->add('tag', 'text', array('label' => 'Tag'))
        ->add('description', 'text', array('label' => 'Beschrijving'))
        ->add('content', 'textarea', array('label' => 'Tekst', 'attr' => array('class' => 'ckeditor'), 'help' =>
            'Schrijf 2 paragrafen onder elkaar, deze worden naast elkaar geplaatst op de website.'))
        ->add('files', 'file', array('required' => false, 'multiple' => true, 'help' =>
            '<b>Home:</b> 1277×670.png<br><b>Gallerij:</b> 1284×110.jpg<br><b>Diensten:</b> 1282×375.jpg<br><b>Footer:</b> 1281×375.jpg'))
    ;

    $builder = $formMapper->getFormBuilder();
    $factory = $builder->getFormFactory();

    $func = function (FormEvent $e) use ($factory) {
        $form = $e->getForm();
        $page = $e->getData();

        $pageLocale = $this->getSubject();
        $pageID = $pageLocale->getPageId();

        if($pageID === null)
        {
            return;
        }

        $form->add($factory->createNamed('descriptionEN', 'text', array(
            'auto_initialize' => false,
            'label' => 'Beschrijving Engels',
            'query_builder' => function (EntityRepository $repository) use ($pageID) {
                return $repository->getDescriptionEN($pageID);
        }
        )));
    };

    $builder->addEventListener(FormEvents::PRE_SET_DATA, $func);

}

Странная вещь: я получаю ошибку, что auto_initialize должен быть ложным, когда я специально установил его в false.... Я определенно уверен, что поле вызывает проблемы, потому что, когда я комментирую поле, я не получаю ошибок.

Что может быть причиной этого?

Теги:
forms
events
sonata-admin

1 ответ

1

Массив параметров - это четвертый параметр функции createNamed

$form->add($factory->createNamed('descriptionEN', 'text', null, array(
        'auto_initialize' => false,
        'label' => 'Beschrijving Engels',
        'query_builder' => function (EntityRepository $repository) use ($pageID) {
            return $repository->getDescriptionEN($pageID);
    }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню