5

AJAX を介していくつかのフィールドを変更し、フォームを保存しようとすると、エラーが発生しExtra fields are not allowedます。

validatorPass()sf1.4のようにそのバリデータ プロパティを変更するにはどうすればよいですか?
または、追加のフィールドを受け入れるようにフォームを変更する可能性はありますか?

SonataAdminBundle を使用してフォームを作成しています。

4

3 に答える 3

20

フォームにバインドする前に、リクエスト データから余分なフィールドを削除できます。

    // The JSON PUT data will include all attributes in the entity, even
    // those that are not updateable by the user and are not in the form.
    // We need to remove these extra fields or we will get a
    // "This form should not contain extra fields" Form Error
    $data = $request->request->all();
    $children = $form->all();
    $data = array_intersect_key($data, $children);
    $form->bind($data);
于 2012-05-14T14:07:37.473 に答える
1

私の場合、解決策は本当に簡単でした。私の例の下にあるコレクションフィールドに allow_add を追加するだけです

        ->add('Details', 'collection', array(
            'type' => new DetailsType(),
            'allow_add' => true,
            'allow_delete' => true,
            'label' => ' '
        ))

この問題の公式ドキュメントを確認することもできます http://symfony.com/doc/current/cookbook/form/form_collections.html

最初に行う必要があるのは、不明な数のタグを受け取ることをフォーム コレクションに知らせることです。これまでに 2 つのタグを追加しましたが、フォーム タイプはちょうど 2 つのタグを受け取ることを想定しています。これを柔軟にするには、allow_add オプションをコレクション フィールドに追加します。

于 2013-07-30T16:12:04.060 に答える
0

エンティティに宣言されていないため、追加のフィールドを追加することはできません。あなたの問題を回避する解決策があります:

  • 追加のフィールドを追加できる動的フォームを作成します。

github での動作の例があります: https://github.com/Keirua/KeiruaProdCustomerDemoBundle

このアドレスの完全なチュートリアル (ただしフランス語):

http://blog.keiruaprod.fr/2012/01/18/formulaires-dynamiques-avec-symfony2/

PS: Sonata はこの方法を使用してフィールドを追加しているようです。

于 2012-01-31T11:40:58.787 に答える