2016-05-03 20 views
13

symfony 2.8以降、コントローラのcreateFormメソッドにのみFQCNを渡すことができます。だから、私の質問は、私はコントローラでフォームを作成するときにフォームクラスの構造に構築パラメータを渡すのですか?symfony 3 createForm with construct parameters

<のSymfony 2.8私は(MyController.php)を行うことができます:

$this->createForm(new MyForm($arg1, $arg2)); 

symfonyは2.8+私だけ(MyController.php)を行うことができます。

$this->createForm(MyForm::class); 

それでは、どのように私は私の中で渡すことができます議論を構成する?私は方法「サービスとしてフォーム」を使用することはできませんので、これらの引数は、単に

答えて

12

...コントローラのアクションで提供されています。それはとにかく前に2.8に行われている必要がありますどのように実際にある

$this->createForm(MyForm::class, $entity, ['arg1' => $arg1, 'arg2' => $arg2]); 

編集

あなたのコメントに基づいて、あなたはクラス型自体にデフォルト値を設定する必要があります。

public function configureOptions(OptionsResolver $resolver) { 
    $resolver->setDefaults([ 
     'arg1' => null, 
     'arg2' => null, 
    ]); 
} 
+0

これは間違っている、私は次のエラーを取得:「オプションをPASSWORDREQUIRED " 存在しない。定義されているオプションは、 "action"、 "allow_extra_fields"、 "attr"、 "auto_initialize" ... – LMS94

+1

です。間違っていない場合は、型クラスのデフォルトオプションを指定する必要があります。 – DevDonkey

+0

優秀、それは働いた!ありがとう – LMS94