Zendframework1+Smartyでコーディングする時の話です。
フォルダ構成は以下の通り。
-application/
|_ modules/
|_ default/
| |- controllers/
| | |_ IndexController.php
| |- models/
| |_ views/(Smartyのテンプレートファイルはここに格納)
|
|_ admin/
| |- controllers/
| | |_ IndexController.php
| |- models/
| |_ views/
|
|_ user/
|- controllers/
|- models/
|_ views/
この時、defaultのIndexControllerのクラス名は
<?php
require_once 'Zend/Controller/Action.php';
class IndexController extends Zend_Controller_Action{
public function indexAction() {
$this->view->result = 'Smarty is running!';
}
}
こんな感じで表示"(baseurl)/"にアクセスすると下記のように正常に表示してくれるのでいいんですが、

例えばadminモジュールの場合は同じクラス名にすると
"Invalid controller class ("Admin_IndexController")" とか、
"Invalid controller specified (index)"とか、
"EXCEPTION_NO_CONTROLLER"とかエラー出力の環境設定によってこんな感じのエラーメッセージが出るんですね。
なので、adminモジュールでIndexControllerクラスを扱いたい場合は
<?php
require_once 'Zend/Controller/Action.php';
class Admin_IndexController extends Zend_Controller_Action{
public function indexAction() {
$this->view->result = 'Smarty is running!';
}
}
のように、IndexControllerの前にモジュール名である"Admin"と"_(アンダースコア)"を付ける必要があるんですね。
表示URLは"(baseurl)/admin/"でも飛べます。

前作ったはずなのに引っかかったのでメモ代わりに。