Php 关于rest和模块的Zend框架问题
伙计们,我的项目有以下结构Php 关于rest和模块的Zend框架问题,php,zend-framework,zend-autoloader,zend-rest-route,Php,Zend Framework,Zend Autoloader,Zend Rest Route,伙计们,我的项目有以下结构 application/ Bootstrap.php configs/ application.ini modules/ default/ controllers/ models/ views/ Bootstrap.php main/ controllers/ UserController.php
application/
Bootstrap.php
configs/
application.ini
modules/
default/
controllers/
models/
views/
Bootstrap.php
main/
controllers/
UserController.php
forms/
models/
resources/
validate/
views/
scripts/
user/
complete-registration.phtml
index.phtml
register.phtml
Bootstrap.php
rest/
controllers/
LoginController.php
models/
views/
Bootstrap.php
现在来谈谈问题。我在UserController.php中定义了一些似乎无法访问的操作。例如,如果我转到localhost/main/user/register,我将无法访问此项。但是,我浏览到localhost/main/user,它可以工作
我不知道它可能是什么,但我的猜测是它与我的Bootstrap.php有关调试时,我在main bootstrap.php中对rest路由初始化进行了注释,它似乎正常工作。我已经给出了我认为受此影响的所有文件。如果我能知道会是什么,那就太棒了。已经花了几天的时间试图弄明白这一点
Bootstrap.php
也许下一个解决方案:
1) 您的
注册表操作是否存在?
2) 此操作的视图是否存在<代码>/views/scripts/user/register.phtml
通过执行以下操作使其工作。希望这将是有用的人
在前端控制器插件中创建路由
class SB_Controller_Plugin_Initialize extends Zend_Controller_Plugin_Abstract
{
public function routeStartup(Zend_Controller_Request_Abstract $request)
{
$frontController = Zend_Controller_Front::getInstance();
$restRoute = new Zend_Rest_Route($frontController, array(), array('rest'));
$router = $frontController->getRouter();
$router->addRoute('rest', $restRoute);
}
}
在application.ini中
resources.frontController.plugins.Initialize = "SB_Controller_Plugin_Initialize"
将此添加到主引导中
protected function _initRoutes()
{
$front = Zend_Controller_Front::getInstance();
$router=$front->getRouter();
$restRoute=new Zend_Rest_Route($front,array(),array('yourrestmodule'));
$router->addRoute('yourrestmodule',$restRoute);
}
请提供有关此部分的更多信息:“如果我转到localhost/main/user/register,我将无法访问此内容。”-如果尝试访问,会发生什么情况?你能给出控制器动作代码吗?有错误信息吗?是的,我已经给出了上面的控制器代码。除了调用一个表单并在表单提交后显示完整的注册信息之外,没有什么别的。关于“如果我转到localhost/main/user/register,我就无法访问它。”我收到的页面未找到错误。我无法浏览到任何控制器中的任何操作。我相信这与休息路线有关。是的,所有这些东西都存在。就像我说的,如果我在引导中对rest路径进行注释,它会工作!
[production]
autoloadernamespaces[] = "Zend_"
autoloadernamespaces[] = "SB_"
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
; front controller
resources.frontcontroller.moduledirectory = APPLICATION_PATH "/modules"
; modules
resources.modules[] =
resources.frontController.params.displayExceptions = 1
resources.db.adapter = "PDO_MYSQL"
resources.db.isdefaulttableadapter = true
resources.db.params.dbname = "****"
resources.db.params.username = "*****"
resources.db.params.password = "*******"
resources.db.params.host = "*******"
resources.db.params.charset = "UTF8"
[staging : production]
[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1
class SB_Controller_Plugin_Initialize extends Zend_Controller_Plugin_Abstract
{
public function routeStartup(Zend_Controller_Request_Abstract $request)
{
$frontController = Zend_Controller_Front::getInstance();
$restRoute = new Zend_Rest_Route($frontController, array(), array('rest'));
$router = $frontController->getRouter();
$router->addRoute('rest', $restRoute);
}
}
resources.frontController.plugins.Initialize = "SB_Controller_Plugin_Initialize"
protected function _initRoutes()
{
$front = Zend_Controller_Front::getInstance();
$router=$front->getRouter();
$restRoute=new Zend_Rest_Route($front,array(),array('yourrestmodule'));
$router->addRoute('yourrestmodule',$restRoute);
}