リダイレクタを使用することで、ユーザを他のサイトやページに遷移させることができます。コントローラ(アクション)内では
$this->redirect でリダイレクタにアクセスできます。
public function myAction()
{
$this->redirect->url("http://www.example.com/");
}
自サービス内での遷移ならば、uri() を使用した方がドメインを省略できるので楽です。
public function myAction()
{
$this->redirect->uri("/diary/edit/3");
}
to() を使用すると、内部URIを使用することができます。例えば、リクエストURLが http://.../foo/bar/buz で、以下のルーティング設定にマッチしたとします。
※ルーティング設定については
こちらを参照してください。
$this->route("default")
->uri(":module/:controller/:action")
->defaults(array(
":module" => "index",
":controller" => "index",
":action" => "index"
));
このリクエストで下記のように to() をコールすると、リダイレクト先URLは http://.../foo/hoge/fuga となります。
$this->redirect->to("c: hoge, a: fuga");
省略されたパラメータは現在の値が使用されます。分かり易く言えば、同モジュールのコントローラにリダイレクトする場合はモジュールの指定を省略でき、同コントローラのアクションにリダイレクトする場合はコントローラの指定も省略できます。
マッチしたルーティング設定(現在のリクエストのルーティング)以外の設定からURLを生成する場合は、そのルーティング名を指定します。
$this->route("test")
->uri("test/:action/:param")
->module("test")
->controller("index")
->defaults(array(
":action" => "index",
":param" => null
));
$this->redirect->to("n: test, a: fuga, param: 1");
リダイレクト先は http://.../test/fuga/1 となります。