CakePHP コントローラとURLの関連
- 2019年12月19日
- 技術情報
今回はCakePHPにおいてコントローラとURLの関連について説明いたします。
(本記事は前回の「CakePHP Windows10環境構築ガイド」の続きです)
コントローラとURLの関連
ローカル環境の以下のパスに「SampleController.php」の作成をおこないます。
C:\xampp\htdocs\caketest\src\Controller\SampleController.php
コントローラの内容は以下のように記述します。
<?php
namespace App\Controller;
use App\Controller\AppController;
class SampleController extends AppController
{
public $autoRender = false;
public function index()
{
echo "コントローラーの呼び出しテストindex";
}
public function method1()
{
echo "コントローラーの呼び出しテストmethod1";
}
public function method2()
{
echo "コントローラーの呼び出しテストmethod2";
}
}
Apacheの起動をおこない、ブラウザで以下のURLにアクセスをおこない、上記コントローラーの各メソッドを呼び出せているか確認をします。
http://localhost/caketest/sample
コントローラー名の「sample」以下、なにも指定しない場合、「indexメソッド」が呼び出されていることが確認できました。

http://localhost/caketest/sample/method1
コントローラー名の「sample」以下に「メソッド名」を指定した場合、該当するメソッドが呼び出されていることが確認できました。

http://localhost/caketest/sample/method2
上記の場合も同様の結果になりました。
コントローラでのパラメータの受け取り
コントローラでパラメータの受け取りをおこなうにはどのようにすればいいでしょうか。
今回はgetパラメータの場合で説明いたします。
コントローラを以下のように修正します。
<?php
namespace App\Controller;
use App\Controller\AppController;
class SampleController extends AppController
{
public $autoRender = false;
public function index()
{
$name = "no name";
if(isset($this->request->query['name'])){
$name = $this->request->query['name'];
}
echo "名前は".$name."です";
}
}
getパラメータは以下の記述方法で取り出すことが可能です。
$this->request->query['name'];
先ほどのURLにパラメータ(name)をつけて送信します。
http://localhost/caketest/sample?name=nishida

無事パラメータを取り出して表示をおこなうことができました。
$name変数の初期値は”no name”と設定しており、
if(isset($this->request->query[‘name’]))の部分で、nameパラメータがセットされているかどうかを判断しています。
http://localhost/caketest/sample
上記のようにパラメータをなにもつけずにアクセスした場合、以下のように表示されます。

nameパラメータがセットされていないので、初期値の”no name”が出力されました。
次回はコントローラとビューの連携方法について説明いたします。
木曜日担当:nishida
nishida at 2019年12月19日 10:00:06