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
    }
}