web-dev-qa-db-ja.com

Cake PHP URLのパラメーターを使用したリダイレクト

URLのパラメーターを必要とするリダイレクト先のページがあります: http://www.example.com/myController/myAction/param1:val1/param2:val2

次のように機能するリダイレクト用のCakePHPリダイレクト関数があることを知っています。

 $this->redirect(array("controller" => "myController",
                       "action" => "myAction",
                       $data_can_be_passed_here),
                 $status, $exit);

上記の関数を使用して、URLの一部として必要なパラメーターを追加するにはどうすればよいですか?

param1:val1param2:val2を渡すことができるように、配列に追加できる別の要素があると思います。

どんな助けも大歓迎です!

28
megaboss98

CakePHPのドキュメントでこれを見つけることができなかった理由はわかりませんが、最終的に解決策を見つけました。他の誰かが同じ問題を抱えている場合に備えて、ここに投稿しています。 (誰かがこれがドキュメントのどこにあるかを知っているなら、それも投稿してください、ありがとう!)

URLにリダイレクトするには:

http://www.example.com/myController/myAction/param1:val1/param2:val2

次を使用できます。

$this->redirect(array("controller" => "myController", 
                      "action" => "myAction",
                      "param1" => "val1",
                      "param2" => "val2",
                      $data_can_be_passed_here),
                $status,
                $exit);

それが役に立てば幸い!

49
megaboss98

パラメータを正確に取得してリダイレクトする必要がある場合は、'?'インデックスを$url配列引数に渡します。

$this->redirect(
    array(
          "controller" => "myController", 
          "action" => "myAction",
          "?" => array(
              "param1" => "val1",
              "param2" => "val2"
          ),
          $data_can_be_passed_here
    ),
    $status,
    $exit
);

/myController/muAction/...?param1=val1&param2=val2にリダイレクトします

これは少なくともCakePHP 1.3に当てはまります

21
Serge S.

代わりに、この形式も使用できます

<?php

$this->redirect('/controller/action/par1:par1/par2:par2/');


?>

<?php

$this->redirect('/controller/action/id/10/name/hello/');

?>
4
Kiran

私は通常、次のようなことをします:$this->redirect(['action' => 'view', $id, 'admins' => true]);

それがあなたを助けることを願っています。

2
D.Dimitrioglo