AJAX を介していくつかのフィールドを変更し、フォームを保存しようとすると、エラーが発生しExtra fields are not allowed
ます。
validatorPass()
sf1.4のようにそのバリデータ プロパティを変更するにはどうすればよいですか?
または、追加のフィールドを受け入れるようにフォームを変更する可能性はありますか?
SonataAdminBundle を使用してフォームを作成しています。
AJAX を介していくつかのフィールドを変更し、フォームを保存しようとすると、エラーが発生しExtra fields are not allowed
ます。
validatorPass()
sf1.4のようにそのバリデータ プロパティを変更するにはどうすればよいですか?
または、追加のフィールドを受け入れるようにフォームを変更する可能性はありますか?
SonataAdminBundle を使用してフォームを作成しています。
フォームにバインドする前に、リクエスト データから余分なフィールドを削除できます。
// 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);
私の場合、解決策は本当に簡単でした。私の例の下にあるコレクションフィールドに 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 オプションをコレクション フィールドに追加します。
エンティティに宣言されていないため、追加のフィールドを追加することはできません。あなたの問題を回避する解決策があります:
github での動作の例があります: https://github.com/Keirua/KeiruaProdCustomerDemoBundle
このアドレスの完全なチュートリアル (ただしフランス語):
http://blog.keiruaprod.fr/2012/01/18/formulaires-dynamiques-avec-symfony2/
PS: Sonata はこの方法を使用してフィールドを追加しているようです。