我正在尝试将模块api
添加到我现有的Zend 1.x项目中,我只能导航到新模块的索引控制器,其他控制器似乎没有工作。
项目布局如下:
application
-controllers
-models
-modules
-api
-controllers
-models
-views
-Bootstrap.php
-views
我已将以下几行添加到application.ini
:
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules[] = ""
我还将这个空的Bootstrap类添加到/modules/api/
:
<?php
class Api_Boostrap extends Zend_Application_Module_Bootstrap {
}
?>
在/modules/api/controllers
我创建了IndexController.php
:
<?php
class Api_IndexController extends Zend_Controller_Action
{
public function indexAction() {
$this->_helper->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
echo "REST API - Hello World";
}
}
?>
当我导航到/api/index
时,这会有效,但是当我尝试在与上述ProjectController.php
相同的目录中添加名为IndexController.php
的新控制器时:
<?php
class Api_ProjectController extends Zend_Controller_Action
{
public function indexAction() {
$this->_helper->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
echo "SSP REST API - Project Controller";
}
}
?>
并尝试导航到我/api/project
的{{1}}网址。
以下是Invalid controller specified (error)
的请求参数:
/api/project
似乎模块正在尝试路由到正确的控制器/操作,但Zend无法在项目树中找到控制器。有什么想法吗?
答案 0 :(得分:0)
尝试确保在应用程序.ini,
中遵循这些内容resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules[] =
// Default Application Resource Namespace
appnamespace = "YourPrefix"
resources.frontController.defaultController = "index"
resources.frontController.defaultAction = "index"
resources.frontController.defaultModule = "modulename"
resources.frontController.prefixDefaultModule = true
在应用程序下面需要一种结构(仅在我的系统中测试)
├───configs
├───forms
├───layouts
│ └───scripts
└───modules
├───App
│ ├───controllers
│ ├───models
│ │ └───DbTable
│ └───views
│ ├───helpers
│ └───scripts
│
└───default
├───controllers
├───models
│ └───DbTable
└───views
├───helpers
└───scripts