我有一个名为“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而不是这个的错误。
有办法解决这个问题吗?
提前致谢!
答案 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