(CakePHP2.x) GET送信で名前を付ける

CakePHP

CakePHP

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で渡されたクエリパラメーターの値を取得する

HtmlHelper

CakePHP2 実践入門 (WEB DB PRESS plus)

新品価格
¥3,110から
(2015/1/27 23:08時点)

スポンサードリンク

コメントを残す

サブコンテンツ

このページの先頭へ