0

エンティティには ORM を使用しません。このフォームは、電子メールの送信専用に作成されています。

私のコントローラーにはこれがあります:

    $builder = $this->myHelper
        ->createBuilder('form', null)

        ->add('my_group', 'collection', array(
        'type' => 'text',
        'label' => 'mylabel'
    ));

    $builder->get('my_group')->add('first_node', 'text');
    $builder->get('my_group')->add('second_node', 'text');

    return $builder->getForm();

フォームは正常にレンダリングされます - 追加の入力フィールドが期待どおりに表示されます。しかし、ポストデータ処理アクションでリクエストをフォームにバインドする場合、my_groupフィールドは空になります (このフィールドが'form'配列にポストされているためでも):

// var_dump($request->get('form'));die;
array
 'my_group' => 
   array
     'first_node' => string 'asdasd' (length=3)
     'second_node' => string 'asdasda' (length=3)

リクエストをフォームにバインドすると、my_groupコレクション フィールドに null が表示されます (他のすべての入力は問題ありません)。

$form->bindRequest($request);
$formData = $form->getData();
var_dump($formData);die; // Outputs my_group => null

私は何を間違っていますか?


更新 1

Twig テンプレートの一部 ( Maxから要求):

{% for field in form.children if 'hidden' not in field.vars.types %}
    ...
    {% elseif 'collection' in field.vars.types %}
        <th>{{ form_label(field) }}</th>
        <td>
            {% for collection_field in field %}
                {{ form_widget(collection_field) }}
            {% endfor %}
        </td>
    {% else %}
    ...
{% endfor %}
4

2 に答える 2

0

FormType必要なコレクションを定義すると、問題は解決しました。

class MyType extends AbstractType
{
    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder->add('first_node', 'text');
        $builder->add('second_node', 'text');
    }

    public function getDefaultOptions(array $options)
    {
        return array();
    }

    public function getName()
    {
        return 'mytype';
    }
}

次に、ビルダーで使用しました:

$builder = $this->myHelper
    ->createBuilder('form', null)

    ->add('my_group', new MyType(), array(
    'label' => 'mylabel'
));


return $builder->getForm();

このデータが正しくフォームにバインドされた後。

于 2013-01-15T10:54:17.083 に答える
0

以下を作成する必要があります。

  1. フォームクラス
  2. フォームのテンプレート (マクロあり)
  3. フォーム内のデータを操作する jQuery スクリプト

このチュートリアルをチェックしてください:)

http://toni.uebernickel.info/2012/03/15/an-example-of-symfony2-collectiontype-form-field-prototype.html

于 2013-01-11T14:05:43.497 に答える