具有子类型的Symfony2 formbuilder字段 - >内部服务器错误(InvalidArgumentException)

时间:2016-06-21 09:26:10

标签: php symfony

我有一个名为“item”的Symfony2表单。它在ItemType中定义,如下所示:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder

        ->add('name', TextType::class,
            array(
                'constraints' => array(
                    new NotBlank()
                )
            )
        ), 
        ->add('item_entry', ItemEntryType::class, array(
            'required' => true
        ))          
}

现在当我尝试发送一个post_entry完全丢失的post请求时,它会抛出一个内部服务器错误,并且日志告诉我这是一个InvalidArgumentException,“类型为'Bundle \ Entity \ Something'的预期参数,给出NULL”。

ItemEntry有一个带有某个实体的字段。但我的问题是,Symfony2是否应该意识到itemEntry根本没有提交,而不是尝试验证特定的字段?我期望的是没有提交item_entry而不是这个的错误。

有办法解决这个问题吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

尝试设置'required'=>您的item_entry表单字段为false。 你也错过了';'在最后一个 - >添加方法

之后

编辑: 如果必须'必需'=>是的,你可以通过在PRE_SUBMIT事件中动态地从表单中删除它来处理这种情况:

$formData = $event->getData();
if(!isset($formData["item_entry"])) {
   $form = $event->getForm();
   $form->remove("item_entry");
}

http://symfony.com/doc/current/cookbook/form/dynamic_form_modification.html