2013-03-18 22 views
0

我有一个集合的形式:Symfony2的形式收集与一个空行

$builder->add('languages', 'collection', array(
    'type'   => new LanguageType(), 
    'allow_add'  => true, 
    'allow_delete' => true, 
    'by_reference' => false 
)); 

在树枝模板我呈现的附加行具有空(LanguageType)。为此,我使用原型并替换名称

在控制器I绑定请求和丢弃“空”语言中的setter:

public function addLanguage($lang) 
{ 
    if($lang->getLanguage()) 
    { 
     $this->languages->add($lang); 
    } 
    // discard the others 
} 

由于某种原因“空”行通过NotBlank验证引发验证错误。

我唯一的工作解决方案是从原始请求中删除空行,但多数民众赞成丑陋。

+0

LanguageType()是什么样的?你将空表单的名称改为? – 2013-03-18 15:26:43

+0

LanguageType非常简单:$ builder-> add('lang') – Uwe 2013-03-18 15:30:30

+1

它并不脏,真的,否则唯一的替代方案是在$ builder-> add('lang “)'。 – 2013-03-18 16:18:39

回答

0

您的解决方案是有效的。

否则,您可以在$builder->add('lang')上设置选项requiredfalse,但是您必须自己做一些额外的检查。

$builder->add('lang', 'text', array(
    'required' => false 
)); 

有关required option的文档。

或者您可以创建一些JS代码,只有当该字段不为空时(输入的空名称没有发送其值),才会注入输入的名称。这也不是很好,但它的工作原理。