CakePHPでトップページのコントローラはどこにある?
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!
フレームワークは、いわゆる構築のルールですからね。各々のフレームワークのルールに慣れるまでの間、しばらくは悩まされそうです。
コメントする