我正在使用Silex并尝试使用一组属于某个组的字段构建表单。
可以使用与以下代码类似的内容吗? (我的例子目前不会产生任何错误,但在Twig中没有列出任何内容。)
在我的路线中:
$builder = $app['form.factory']->createBuilder('form');
$tags[] = array('label' => 'Tag A', 'data' => 1);
$tags[] = array('label' => 'Tag B', 'data' => 2);
foreach($tags as $key => $tag) {
$builder->add('tags', 'collection', array(
'type' => 'text',
'allow_add' => true,
'allow_delete' => true,
'options' => array(
'label' => $tag['label'],
'constraints' => array(new Assert\NotBlank()),
'data' => $tag['data']
),
));
}
$form = $builder->getForm();
在Twig中:
<ul class="tags">
{% for tag in form.tags %}
<li>{{ form_row(tag) }}</li>
{% endfor %}
</ul>
答案 0 :(得分:0)
我没有使用Silex一段时间,但原则应该和Symfony一样。
你不应该像这样循环创建集合。您基本上是为每个标签创建多个集合。相反,您需要所有标签的单个集合。我没有对此进行测试,但这些方面的内容应该有效...
// form variables ...
$tags[] = array('label' => 'Tag A', 'data' => 1);
$tags[] = array('label' => 'Tag B', 'data' => 2);
$data = array( 'tags' => $tags );
$builder = $app['form.factory']->createBuilder('form', $data);
$builder->add('tags', 'collection', array(
'type' => 'text',
'allow_add' => true,
'allow_delete' => true,
'options' => array(
'constraints' => array(new Assert\NotBlank()),
),
));