3

Symfony2 と mopabostraps を使用しています。フォームに電子メール コレクション要素を作成したいのですが、今日まですべてがうまく機能していました (理由はわかりません)。

次のエラーが表示されます。

Item "prototype" for "Array" does not exist in *snip*.html.twig at line 36

これは次のとおりです。

<span id="member-fields-list" data-prototype="{{ form_widget(form.members.vars.prototype)|e }}"></span>

しばらく検索したところ、1 つのヒントしか見つかりませんでした: コレクション要素が null です (JavaScript を介して入力されます) が、値を追加してもどちらも機能しません

$UserList = new UserList();
        **********snip***********
        $UserList->setMembers(array());

        $form = $this->createFormBuilder($UserList)
        **********snip***********
    ->add('members', 'collection', array(   
                'type' => 'email',
                'prototype' => true,
                // 'allow_add' => true,
                'allow_delete' => true,
                'options' => array(
                    'required' => true,
                    'attr' => array(
                        'class' => 'email-box',
                        'readonly' => 'readonly',
                    ),
                ),
            )
        )

編集:解決策を得ました

「allow_add」XD のコメントを外すだけです

4

2 に答える 2

2

form_widget はコレクションのウィジェットを 1 つだけ取得するために使用され (「1 つのサブ フィールド」を理解してください)、form_row は完全なプロトタイプ (例ではメンバーのすべてのサブ フィールド) を取得するために使用されます。

したがって、代わりにform_rowを使用して、メンバーの完全なプロトタイプを表示します。

{{ form_row(form.members.vars.prototype)|e }}

form_widget は、「ユーザー名」など、メンバーの 1 つのフィールドを取得する場合にのみ使用します。

{{ form_widget(form.members.vars.prototype.username)|e }}

1 つのフィールドとそのラベルの form_error を個別に取得することもできます。

{{ form_errors(form.members.vars.prototype.username)|e  }}
{{ form_label(form.members.vars.prototype.username, 'My label')|e  }}
于 2013-03-06T14:34:56.620 に答える