CMS構築を目的にPHPをベースとしたWordPress、CakePHPやPEARなどオープンソースを中心に解説しています

CakePHPでコントローラとビューについては把握しました。しかし、いざトップページのコントローラを設定するとなるとうまくいきません。

Zend Frameworkの例と、CakePHPのルールから推測するには「/app/controllers/index_controller.php」を設置すればよいはずですよね。しかし、うまくいきません。

少し調べたところ、トップページだけは例外のようです。
その設定が記述されているのは「/app/config/routes.php」のです。

/**
 * Here, we are connecting '/' (base path) to controller called 'Pages',
 * its action called 'display', and we pass a param to select the view file
 * to use (in this case, /app/views/pages/home.ctp)...
 */
	Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
/**
 * ...and connect the rest of 'Pages' controller's urls.
 */
	Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));


つまりは、トップページにアクセスがあった場合には、このルーティング設定ファイルによりコントローラ「pages」のアクション「display」をコールするようになってるんですね。
確認のため、コントローラ「/app/controllers/pages_controller.php」に以下の記述をしてみます。

class PagesController extends AppController {

	public $name = "Pages";
	public $uses = null;
	public $autoRender = false;

	function display(){
		echo "Hello World!";
	}
}

ブラウザでトップページにアクセスした出力結果は以下のとおりです。

Hello World!

フレームワークは、いわゆる構築のルールですからね。各々のフレームワークのルールに慣れるまでの間、しばらくは悩まされそうです。

このエントリーをはてなブックマークに追加

Comment

Comment Form

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Monthly Archives

Search