2016-05-24 3 views
0

createFormを使用して作成されたSymfony 2フォームを取得しました。フォームが検証されたら、最初に設定したアクションを変更する必要があります。これは可能ですか?リクエストが処理された後のsymfonyフォームアクションの変更

$formData = $this->loadData($id); 

// Form builder 
$form = $this->createForm(new ComposeForm(), $formData, [ 
    'action' => $$this->generateUrl('defaultAction') 
]); 

// Processing form 
$form->handleRequest($request); 

if ($form->isSubmitted() && $form->isValid()) { 
    $data = $form->getData(); 

    $myVar = $form->get('myVar')->isClicked(); 
    if ($myVar) { 
     // Can I change the form action here?? 
    } 
} 
+0

どうしてそうする必要がありますか?フォームは通常1つのアクションで処理されます。 – KhorneHoly

+0

異なるアクションを引き起こす2つの送信ボタンがあります。どちらの場合でもPOST経由でフォームを送信したいので、リダイレクトはオプションに見えません。 –

+0

あなたの質問にしたいことを詳しく説明できますか?私はあなたがあなたの目標に間違ったアプローチをしていると推測していますが、私はあなたが達成したいことを言うことはできません。 – KhorneHoly

答えて

0

それはコントローラにかなりまっすぐ進むです:

if ($myVar) { 
     $form->setAction($this->generateUrl('target_route')) 
    } 

しかし、私はそうすることのポイントを参照してくださいいけません。

+0

これまでに試したことがあります:致命的なエラー:定義されていないメソッドを呼び出すSymfony \ Component \ Form \ Form :: setAction() –

+0

$ this-> createForm()は何をしますか? –

+0

このメソッドはControllerクラスに含まれていますが、基本的にはフォームインスタンスを作成します。 http://api.symfony.com/2.8/Symfony/Bundle/FrameworkBundle/Controller/Controller.html#method_createForm setActionがうまくいかない理由は分かりません。 –

関連する問題