我正在使用Zend Framework中的多模块CMS。我想创建一个这样的结构:
testsite/
index.php
library/
zend/
test/
application/
configs/
application.ini
modules/
users/
controllers/
models/
....
frontend/
controllers/
models/
....
backend/
controllers/
models/
...
bootstrap.php
我创建了以下代码:
//in application.ini
resources.frontController.defaultModule = "frontend"
resources.frontController.defaultControllerName = "index"
resources.frontController.defaultAction = "index"
resources.frontController.plugins.init = "Test_Controller_Plugin_Initializer"
//in bootstrap.php
protected function _initControllers()
{
$this->bootstrap('frontController');
$this->_front = $this->getResource('frontController');
$this->_front->addControllerDirectory(APPLICATION_PATH . '/backend/controllers', 'backend');
$this->_front->addControllerDirectory(APPLICATION_PATH . '/frontend/controllers', 'frontend');
}
//in Test/controllers/plugin/initializer.php
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
$front = Zend_Controller_Front::getInstance();
$request = $front->getRequest();
$request->setModuleName('frontend');
$request->setControllerName('index');
$request->setActionName('index');
}
当我转到我的基本网址.../testsite
时,它无效。你能告诉我哪里出错吗?
答案 0 :(得分:0)
您是否尝试将模块放在模块目录中? 即:
testsite/
index.php
library/
zend/
test/
application/
configs/
application.ini
modules/
users/
controllers/
models/
....
frontend/
controllers/
models/
....
backend/
controllers/
models/
...
bootstrap.php
通常,zf希望找到它的模块。您可能需要调整rapplication.ini设置以反映这一点。
答案 1 :(得分:0)
要使其工作,您希望它如何引用Zend_Application_Resource_Frontcontroller
具体而言,您需要传递'module'=>的数组。 'controller'目录对resources.frontController.controllerDirectory
。
controllerDirectory: 指定单个字符串的字符串值 控制器目录,或模块到控制器目录的数组 对
我怀疑这会解决所有问题,但它应该引导你朝着正确的方向前进。