スポンサードリンク

GET送信をする時に、複数付けたい場合に
順番通りに書けばCakePHPは受け取ってくれるようですが
名前も指定できるみたいです。
スポンサードリンク
ViewファイルでGET送信する
ビューファイルで通常GETを付ける場合は、
echo $this->Html->link('検索結果へ戻る', array( 'action' => 'view', $a ));
URL→http://サイトのURL/アクション名/$a
コントローラーでGETを受け取る場合は
public function post($id = null){ $post_id = $id }
とするとGETで送った変数aの値が変数post_idに入ります。
複数の場合
ビューファイルで通常GETを付ける場合は、
echo $this->Html->link('検索結果へ戻る', array( 'action' => 'view', $a, $b, $c ));
URL→http://サイトのURL/アクション名/$a/$b/$c
コントローラーでGETを受け取る場合は
public function post($id = null, $no = null, $day = null){ $post_id = $id; $user_no = $no; $post_day = $day; }
とするとGETで送った変数aの値が変数post_id
変数bの値が変数user_no、変数aの値が変数post_dayに入ります。
上記の様にHTMLヘルパーのアクション指定部分に
カンマを付けてからGETで送りたいものを付けます。
GET送信に名前を付ける
ビューファイルで通常GETを付ける場合は、
echo $this->Html->link('戻る', array('controller' => 'posts', 'action' => 'index', 'type:search'));
上記の様にアクションの後ろに’type:search’とすると、
GET送信でsearchという名前を付けて値を送れます。
コントローラー側で受け取るときは
$type = $this->params['named']['type'];
で値を取得できます。
ただ、URLが変な風になってます。
http://ドメイン/posts/index/type%3Asearch
というURLになってしまって
「:」がエスケープされています。
どうやって戻すのかまだ解決できていないのですが、
とりあえず値は取得できるので
いまはこのURLのままです。
解決できたら追記します。
多分、mod_rewriteを修正するんだろうけど・・・
解決できました!
echo $this->Html->link('戻る', array( 'controller' => 'posts', 'action' => 'index', 'type' => 'search' ));
(結果)
http://ドメイン/posts/index/type:search
パラメーターの名前をキーにして
連想配列で指定するとエスケープされずにURLが表示されます。
(参考)
CakePHP:CakePHPで$_GETの値を取得
[CakePHP] urlで渡されたクエリパラメーターの値を取得する
スポンサードリンク