2012-04-22 4 views
1

createFormメソッドを使用してコントローラからフォームに変数を渡す方法を理解していますが、私が呼び出されたフォームに埋め込まれたフォームにその値を渡す必要がある場合はどうですか?createForm?私は、明示的にcreateFormを埋め込みフォームのどこにでも呼び出すことはありませんでした。だから、どうすればその値を得ることができますか?合格しようとしている価値がサービスを通じて得られることに気づく価値はありますが、私はコントローラにないので$this->get('serviceName')->getValue()に電話することはできません。あなたは、あなたができないコントローラではありませんので、それはないですオプション配列の値を埋め込みフォームに渡す

//in a controller 
$form = $this->createForm(new FormType(), $formObject, array('value' => $value)); 

答えて

2

:参考までに、これは私がCreateFormの方法ではなく、コンストラクタを通じてそれを行う方法に注意してください、私は親フォームに値を取得する方法ですサービス(およびパラメータ)を注入します。特に、各タイプがサービスになることができるタイプにもちろん、方法getはデフォルトでは利用できないため、$this->get('serviceName')->getValue()を直接行うことはできません。ただし、フォームタイプにサービスを注入することができます。サービスを注入する方法については、依存性注入hereについて私が答えた別の質問を参照してください。

これは、あなたのタイプをサービスに変換する方法を教えてくれるので、あなたの依存性を注入すると同時に、あなたの価値を注入する方法を示しています。

何らかの理由で型をサービスに変換できない場合は、オプションをFormTypeに渡します。FormTypeはそれを読み込み、valueオプションを埋め込み型に渡します。それは渡すスタイルのデザインのようなもので、すべてのオプションをメインの型に渡します。メイン型は、各サブ型にそれらの一部を渡しますが、各サブ型はそれぞれのサブ型に渡されます。ここでもオプションを読んでカスタムフォームタイプで使用する方法については、この[料理レシピ]をご覧ください。

結論として、あなたのタイプをサービスに変換する方が簡単だと思います。

希望すると、これが役立ちます。

よろしくお願いいたします。
マット