2009-09-30 15 views
29

2つ以上のパラメータを渡す別のアクションにどのようにリダイレクトできますか?このコード:URLでsymfony 2つのパラメータでリダイレクト

$this->redirect('input/new?year=' . $year . '&month=' . $month); 

結果:

http://.../input?year=2009&month=9

答えて

53

これは正常です。リダイレクトを絶対URLにリダイレクトします。

$this->redirect('route_name', array('year' => $year, 'month' => $month)); 

(symfonyの1.4でテスト)

+1

助けた。 "http://.../input/new/year/2009/month/10"のようなURLを生成する以外は – kipelovets

+3

ルートが定義されている場合は、その名前で 'default'を置き換えて、2番目のパラメータを変更することができます必要に応じて、ルートのパラメータを指定します。 – xarch

+4

もしあなたが経路を定義していれば、 '$ this-> redirectToRoute( 'routename'、['param1' => 'value'、['param2' => 'value'])' – chteuchteu

3

私は、これは全く正常なsymfonyの振る舞いではないと思います。いくつかのルーティングルールを定義しましたか?

$this->redirect('module/action?'.http_build_query($paramsArray)); 
+0

いいえ、それは助けてくれません – kipelovets

1

奇妙なこと:

はあなたにもこれを試してみました。します

$this->redirect('@default?module=input&action=new&year=' . $year . '&month=' . $month); 

あなたのために働くのですか?

+2

はい、それでも動作します。ありがとう、しかし、xarchのソリューションはよりきれいです=) – kipelovets

-3
$this->redirect('input/new/year/' . $year . '/month/' . $month); 
+3

symfonyのルーティングシステム – jochil

+1

実際にはありません。 symfonyのインテリジェント内部ルーティングエンジンは、このリダイレクトが機能する理由です。下の投票のためにありがとう;) – Mohammad

+5

このようにすると、ルーティングルールを調整するときにすべてのリンク/リダイレクトを変更する必要があります – jochil

4

:あなたはそれを行うことができますSymfonyのバージョン(2.7+)it's even easier

return $this->redirectToRoute('default', array('year' => $year, 'month' => $month)); 
2

を現在サポートされて:あなたはまた、ルート名とパラメータの配列を指定して、リダイレクトを使用することができます

$this->redirect($this->generateUrl('default', array('module' => 'input', 
'action' => 'new', 'year' => $year, 'month' => $month))); 
関連する問題