2016-06-21 3 views
0

私は "アイテム"と呼ばれるSymfony2フォームを持っています。これは、itemTypeにで定義され、次のようになりますされています。私はitem_entryが完全に欠落しているとPOSTリクエストを送信しようとすると、今サブフォーム付きのsymfony2フォームビルダーフィールド - >内部サーバーエラー(InvalidArgumentException)

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 

     ->add('name', TextType::class, 
      array(
       'constraints' => array(
        new NotBlank() 
       ) 
      ) 
     ), 
     ->add('item_entry', ItemEntryType::class, array(
      'required' => true 
     ))   
} 

、それは内部サーバーエラーをスローし、ログはそれがあったInvalidArgumentException、「期待される引数を私に語りました'Bundle \ Entity \ Something'タイプの場合、NULLを指定します。

ItemEntryには、何かエンティティのあるフィールドがあります。しかし、私の問題は、symfony2がitemEntryが全く提出されておらず、特定のフィールドを検証しようとしないことに気づいてはいけませんか?私が期待するのは、item_entryがこの代わりに提出されなかったというエラーです。

これを処理する方法はありますか?

ありがとうございます!

答えて

0

item_entryフォームフィールドに 'required' => falseを設定してみてください。 また、 ';'が見つかりません最後の後に - >を追加する方法

編集: それを「必要」しなければならない場合=> trueの場合、あなたは動的PRE_SUBMITイベントでフォームからそれを削除することによってこのケースを扱うことができます。

$formData = $event->getData(); 
if(!isset($formData["item_entry"])) { 
    $form = $event->getForm(); 
    $form->remove("item_entry"); 
} 

http://symfony.com/doc/current/cookbook/form/dynamic_form_modification.html

+0

item_entryは必須です。 – Chi