0

我正在使用 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();

在树枝中:

<ul class="tags">
  {% for tag in form.tags %}
    <li>{{ form_row(tag) }}</li>
  {% endfor %}
</ul>
4

1 回答 1

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()),
    ),
));
于 2012-12-10T12:40:35.683 回答