【问题标题】:Automatic initialization is only supported on root forms. You should set the "auto_initialize" option to false on the field仅根表单支持自动初始化。您应该在字段上将“auto_initialize”选项设置为 false
【发布时间】:2015-03-03 10:22:16
【问题描述】:

我的 Symfony2 项目中出现以下错误:

仅根表单支持自动初始化。您应该在“descriptionEN”字段上将“auto_initialize”选项设置为 false。

我正在使用Sonata Admin Bundle。我想在呈现表单之前在我的表单中填充 文本字段。所以我使用表单事件 PRE_SET_DATA 。在奏鸣曲中,您只有 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 ... 时,我得到的错误应该是 false。我确信这是导致问题的字段,因为当我评论该字段时,我没有收到任何错误。

造成这种情况的另一个原因是什么?

【问题讨论】:

    标签: php forms symfony events sonata-admin


    【解决方案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);
        }
    

    【讨论】:

      猜你喜欢
      • 2016-02-14
      • 2018-03-09
      • 2012-10-05
      • 2010-10-23
      • 1970-01-01
      • 1970-01-01
      • 2017-02-11
      • 1970-01-01
      • 2015-04-16
      相关资源
      最近更新 更多