Reputation: 6820
I'm having the following error in my Symfony2 project:
Automatic initialization is only supported on root forms. You should set the "auto_initialize" option to false on the field "descriptionEN".
I'm using the Sonata Admin Bundle. I would like to populate a text field in my form before rendering the form. So I am using the form event PRE_SET_DATA
. In Sonata you only have prePersist & preUpdate so I am doing it like this:
// 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);
}
The strange thing is I'm getting the error that auto_initialize should be false when I've specifically set it to false ... . I'm definitely sure that's the field causing problems because when I comment the field I get no errors.
What could be another reason causing this?
Upvotes: 0
Views: 2209
Reputation: 595
The array of options is the fourth parameter of the function 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);
}
Upvotes: 3