zendframeworkで管理画面とかどうつくるか
やりたいこと
例えば「ttp://xxx.xx/」とかのURLのシステムで、
システムの管理画面とかは「ttp://xxx.xx/admin」とか「ttp://xxx.xx/master」とかにしたい
方法
モジュールの概念を使う
エントリポイントを以下のように記述
<?php set_include_path('.' . PATH_SEPARATOR . '../library' . PATH_SEPARATOR . './application/default/models/' . PATH_SEPARATOR . get_include_path()); require_once 'Zend/Controller/Front.php'; /** * コントローラのセットアップ */ $controller = Zend_Controller_Front::getInstance(); // ↓これが重要 $controller->setControllerDirectory(array( 'default' => '../application/default/controllers', 'master' => '../application/master/controllers', 'admin' => '../application/admin/controllers', )); $controller->throwExceptions(true); // should be turned on in development time // run! $controller->dispatch();
解説
Zend_Controller_Front::setControllerDirectory()で必要なモジュールを定義しておくと、
ttp://xxx.xx/モジュール名/コントローラー名/....
という風にURLを認識してくれる
ディレクトリ構造は以下のようにしておく
html/
index.php
application/
default/
controllers/
IndexController.php
FooController.php
models/
views/
scripts/
index/
foo/
helpers/
filters/
admin/
controllers/
IndexController.php
models/
views/
scripts/
index/
helpers/
filters/
略
注意
admin/controllers/indexController.php内に記述されるモジュールコントローラークラスは
以下のようにAdmin_がプレフィックスとなりAdmin_IndexControllerとなる
defaultのControllerについてはプレフィックスは不要
<?php class Admin_IndexController extends Zend_Controller_Action { /** * The default action - show the home page */ public function indexAction() { // TODO Auto-generated IndexController::indexAction() action } }