我第一次尝试设置模块,但遇到了此错误:
Exception information:
Message: Invalid controller specified (index)
Stack trace:
#0 C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Controlle\Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#1 C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Application\Bootstrap\Bootstrap.php(97): Zend_Controller_Front->dispatch()
#2 C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#3 C:\Program Files (x86)\Zend\Apache2\htdocs\dev.paygiant.com\public\index.php(30): Zend_Application->run()
#4 {main}
Request Parameters:
array (
'module' => 'admin',
'controller' => 'index',
'action' => 'index',
)
我的应用目录:
configs/
controllers/
modules/
Admin/
controllers/
IndexController.php
models/
views/
管理索引控制器:
<?php
class IndexController extends Zend_Controller_Action {
public function init()
{
//
}
public function indexAction()
{
// action body
}
}
我的application.ini文件包含:
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules[] =
在我的引导文件中:
public function _initModuleLoaders()
{
$this->bootstrap('Frontcontroller');
$fc = $this->getResource('Frontcontroller');
$modules = $fc->getControllerDirectory();
foreach ($modules AS $module => $dir) {
$moduleName = strtolower($module);
$moduleName = str_replace(array('-', '.'), ' ', $moduleName);
$moduleName = ucwords($moduleName);
$moduleName = str_replace(' ', '', $moduleName);
$loader = new Zend_Application_Module_Autoloader(array(
'namespace' => $moduleName,
'basePath' => realpath($dir . "/../"),
));
}
}
我做错了什么?
在主 Bootstrap.php 模块中,您不需要任何额外的东西。
但是,您确实需要在每个模块的目录中都有一个 Bootstrap.php。在你的情况下,这将是modules/Admin目录。
这个新的 Bootstrap.php 应包含以下内容:
<?php
class Admin_Bootstrap extends Zend_Application_Module_Bootstrap
{
}
我还认为模块目录应该以小写字母开头,而你的模块目录应该以大写字母开头。