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 に答える