libro
www.tuyano.com
初心者のためのCakePHP3 プログラミング入門

コントローラーとビュー (6/6)

作成:2015-08-29 10:13
更新:2015-08-29 10:13

■クエリーパラメータについて

$this->requestには、リクエストに関する面白い機能がいろいろと用意されています。その一つ、クエリーパラメータに関する機能を使ってみましょう。

先に、アドレスを指定してパラメータを送る方法について説明しました。例えば、 http://localhost:8765/helo/index/abc/123 というようにすることで、abc123をパラメータとしてアクションメソッドに送ることができましたね。

このようなパラメータの書き方はとてもスマートですが、多くのサイトでは違う形で値を送ってします。「クエリー文字列」と呼ばれるものを付け足す方法で、例えば、
http://localhost:8765/helo/index?id=123&name=taro

こんな具合に、アドレスの最後に「~?キー=値&キー=値……」といった形で値を付け足すことで、それぞれの値に名前(キー)を指定して送ることができるわけです。上の例なら、idというパラメータに「123」が、nameパラメータに「taro」が入れられます。これがクエリーパラメータです。

このクエリーパラメータは、$this->requestの「query」メソッドで取り出すことができます。
$変数 = $this->request->query( キー );

これで、指定したキーの値を取り出すことができます。実際の利用例を挙げておきましょう。下のリスト欄のようにコントローラーを書き換えて下さい。そして、
http://localhost:8765/helo/index?id=1001&name=john

こんな感じでアクセスしてみましょう。すると画面に「your id:1001, name:john」とメッセージが表示されます。

ここでは、こんな形でクエリーパラメータを取り出しています。
$id = $this->request->query('id');
$name = $this->request->query('name');

パラメータがなかった場合、queryの値はnullになります。パラメータが指定されていなかったとしても特にエラーなどにはならないので、必要に応じてqueryした値がnullかどうかチェックして使うとよいでしょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

<?php
namespace App\Controller;

use App\Controller\AppController;

class HeloController extends AppController
{
    public function index()
    {
        $id = $this->request->query('id');
        $name = $this->request->query('name');
        $this->set('message', 'your id:' . $id . ', name:' . $name);
    }
}
※関連コンテンツ

「初心者のためのCakePHP3 プログラミング入門」に戻る