伙计我的项目中有以下结构。
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有关。 在调试时我评论了主要bootstrap.php中的其余路由初始化,它似乎有效。我已经给出了我认为受此影响的所有文件。如果我能知道它会是什么,那就太棒了。已经花了几天时间试图解决这个问题。
<?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
// Commenting this seems to make the module auto initializing work.
protected function _initRestRoute()
{
$this->_logger->info('Bootstrap ' . __METHOD__);
$this->bootstrap ( 'frontController' );
$frontController = Zend_Controller_Front::getInstance ();
//$restRoute = new Zend_Rest_Route ( $frontController );
//$frontController->getRouter ()->addRoute ( 'default', $restRoute );
$restRoute = new Zend_Rest_Route($frontController, array(), array('rest'));
$frontController->getRouter ()->addRoute('rest', $restRoute);
}
}
<?php
class Main_Bootstrap extends Zend_Application_Module_Bootstrap
{
}
<?php
class Main_UserController extends Zend_Controller_Action
{
protected $_model;
public function init()
{
// Get the default model
$this->_model = new Main_Model_User ();
// Add forms
$this->view->registerForm = $this->getRegistrationForm ();
}
public function indexAction()
{
}
public function registerAction()
{
}
public function completeRegistrationAction()
{
$request = $this->getRequest ();
if (! $request->isPost ())
{
return $this->_helper->redirector ( 'register' );
}
if (false === $this->_model->registerUser ( $request->getPost () ))
{
return $this->render ( 'register' );
}
}
public function getRegistrationForm()
{
$urlHelper = $this->_helper->getHelper ( 'url' );
$this->_forms ['register'] = $this->_model->getForm ( 'userRegister' );
$this->_forms ['register']->setAction ( $urlHelper->url (
array (
'controller' => 'user',
'action' => 'complete-registration'
),
'default' ) );
$this->_forms ['register']->setMethod ( 'post' );
return $this->_forms ['register'];
}
}
[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
答案 0 :(得分: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);
}
}
在application.ini中,
resources.frontController.plugins.Initialize = "SB_Controller_Plugin_Initialize"
答案 1 :(得分:1)
在主引导程序中添加它
protected function _initRoutes()
{
$front = Zend_Controller_Front::getInstance();
$router=$front->getRouter();
$restRoute=new Zend_Rest_Route($front,array(),array('yourrestmodule'));
$router->addRoute('yourrestmodule',$restRoute);
}
答案 2 :(得分:0)
也许在下一个解决方案:
1)您的registerAction
是否存在?
2)您的view
此行为是否存在? /views/scripts/user/register.phtml