Symfony 2では、コントローラーに次のコードがあります。
// prepare to render the seller info panel
$response = array(
'data' => $data,
);
// render the seller info panel
return $this->redirect($this->generateUrl('route', $response));
ルートは次のとおりです。
route:
pattern: /listing/complete/{data}
defaults: { _controller: FooBundle:Foo:action }
requirements:
_method: POST
リダイレクトがGETリクエストを行っているため、これは機能しません。私もこのパターンを試しましたが、ルートと一致しません:
route:
pattern: /listing/complete
defaults: { _controller: FooBundle:Foo:action }
requirements:
_method: POST
ルーティングのドキュメントが役に立たないことがわかりました。リダイレクトにPOSTリクエストを送信させる方法はありますか?ルートはどのように見えますか?それを実現するためにコントローラで何かを行う必要がありますか?
POSTリクエストをリダイレクトすることは不可能です。ブラウザはPOSTデータを再送信しなければならないためです。そうではありません。)代わりに何をすべきかこの場合は forwarding。 を使用します
POSTリクエストのリダイレクト(Symfony 2.6以降)の最新の方法は単純です:
_return $this->redirectToRoute('route', [
'request' => $request
], 307);
_
コード_307
_はリクエストメソッドを保持しますが、redirectToRoute()
はショートカットメソッドです。
渡されたパラメーターで$this->generateUrl
を使用したときも、同じエラーが発生しました。しかし、私がこれを試したとき、私のリダイレクトは機能しました:
$this->get('router')->generate('route_name', array('param1' => 'paramVal'))
(私はそれが今あなたにそれほど役に立たないことを知っています。)