Motomichi Works Blog

その日学習したことについて書いている日記です。誰かの役に立ったらそれはそれで嬉しいです。

vagrantその19-2 cakephp入門をやってみる(Controllerその1)ControllerとactionとURL

参考にさせて頂いたページ

初心者のためのCakePHP2.0 プログラミング入門

「2. コントローラーを使おう!」を見ながらやってみる

コントローラーファイルの命名規則

app/Controller/SampleController.php

をまず作成する。

コントローラーのファイル名は「アッパーキャメルケース」

cakephpを使用して作るwebアプリのURL

URLは以下のようになる

http://ドメイン/CakePHPのディレクトリ/アプリケーション/アクション

とのこと

SampleController.phpにindexアクションを記述してページを見てみる

SampleController.phpに記述したソースコードは、参考サイトに倣って以下のとおり

<?php
App::uses('AppController', 'Controller');

class SampleController extends AppController {

    public function index() {
        $this -> autoRender = false;
        echo "<html><head></head><body>";
        echo "<h1>サンプルページ</h1>";
        echo "<p>これがサンプルのページです。</p>";
        echo "</body></html>";
    }

}

とした。

そして以下のURLにアクセスするとページが確認できる。

http://192.168.33.10/cakephp/sample/index

ここまでの実装に関する解説

まず //App::uses( クラス名 , パッケージ名 ); App::uses('AppController', 'Controller');

これは、SampleController.php内で使用する"Controllerパッケージにある「AppController」というクラス"を読み込む記述。

次の

//class コントローラー名 extends AppController {
class SampleController extends AppController {

これは"AppControllerを継承して、SampleControllerを作成する"という記述。

次に

//public function アクション名() {
public function index() {

これはURLの末尾がindexだったときに実行するアクションを作成している記述。

このとき、自分の環境では

http://192.168.33.10/cakephp/sample/index

にアクセスする事でページが表示される。

http://192.168.33.10/cakephp/コントローラー名(でなおかつファイル名)/アクション名

と言い換える事ができる。

次に

$this -> autoRender = false;

の部分はviewを使用しないという設定をしている。

$thisはこのクラスのインスタンス

例えばSampleHogeController.phpを作ってみる

二つの単語を合わせたコントローラー名の場合はURLはどうなるのか?という事の検証。

まず、SampleHogeController.phpを作成した。

次に中は

<?php
App::uses('AppController', 'Controller');

class SampleHogeController extends AppController {

    public function index() {
        $this -> autoRender = false;
        echo "<html><head></head><body>";
        echo "<h1>サンプルページ</h1>";
        echo "<p>これがサンプルのページです。</p>";
        echo "</body></html>";
    }

}

とした。

さっきも書いたけど、ファイル名とクラス名は同じでSampleHogeControllerです。

これにアクセスできるURLは

http://192.168.33.10/cakephp/samplehoge/index

http://192.168.33.10/cakephp/sample_hoge/index

みたい。