我有一个带有集合的表单:
$builder->add('languages', 'collection', array(
'type' => new LanguageType(),
'allow_add' => true,
'allow_delete' => true,
'by_reference' => false
));
在twig-template中,我使用空(LanguageType)渲染另一行。为此,我使用原型并替换名称。
在Controller中,我绑定了Request并丢弃了setter中的“empty”语言:
public function addLanguage($lang)
{
if($lang->getLanguage())
{
$this->languages->add($lang);
}
// discard the others
}
由于某些原因,“空”行通过NotBlank验证器抛出验证错误。
我唯一可行的解决方案是从raw-Request中删除空行,但那很难看。
答案 0 :(得分:0)
您的解决方案有效。
否则,您可以在required
上将选项false
设置为$builder->add('lang')
,但之后您必须自行进行额外检查。
$builder->add('lang', 'text', array(
'required' => false
));
的文档
或者您可以创建一些JS代码,仅当字段不为空时才注入输入的名称(使用空名称输入时不会发送其值)。它也不是很好但是有效。