
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の値を取得
