CakePHP コントローラとURLの関連

今回は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



アプリ関連ニュース

お問い合わせはこちら

お問い合わせ・ご相談はお電話、またはお問い合わせフォームよりお受け付けいたしております。

tel. 06-6454-8833(平日 10:00~17:00)

お問い合わせフォーム