2013-09-05 6 views
7

フォームクラスのbuildFormメソッド(AbstractTypeが派生しました)では、そのフォームのアクションを設定できますか?ビルド時にフォームクラスアクションを変更することはできますか?

$form = $this->createFormBuilder() 
    ->setAction($this->generateUrl('my_action')) 
    ->add('field', 'text') 
    ->add('button', 'submit'); 

私は意味は、setActionクラスを形成するための等価です:埋め込まれたフォームを構築するときに、私が何をしたいのか は、私が使用することができますsetAction方法に類似しているのですか?

答えて

32

あなたはとてもそれにsetActionが動作する呼び出し、buildForm方法で同じフォームビルダーへのアクセスを取得:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder->setAction($path); 
} 

質問は、あなたのフォームタイプに$pathを渡す方法です。フォームの作成時にオプションとして渡す方法があります。しかし、とにかく$pathを渡しているのであれば、action自体を設定するのはなぜですか?

$form = $this->createForm(new MyType(), $object, array(
    'action' => $this->generateUrl('my_action'), 
)); 

もう一つの方法は、フォームタイプのルータを注入してURLを生成するためにそれを使用することですが、私はそれはフォームタイプで決定のようなものを作るために良いアイデアだとは思いません。

+0

完璧、それは働いた!ありがとう! –

+0

素晴らしいアップホートと答えをチェックすることを忘れないでください。 ;) –

+0

私の評判はまだそれを許可していないので、私はまだupvoteすることはできません。それが許せば、私はそれをOKにしますか? –