Error with module bootstrapping
my application.ini
[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
test.bootstrap.path = APPLICATION_PATH "/modules/test/Bootstrap.php"
test.bootstrap.class = "Test_Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
resources.view.basePath = APPLICATION_PATH "/views/"
resources.view[] =
test.resources.view[] =
db.adapter = "PDO_MYSQL"
db.params.dbname = "money"
db.params.username = "root"
db.params.password = "**************"
resources.modules[] =
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
[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
application/modules/test/bootstrap.php
class Test_Bootstrap extends Zend_Application_Module_Bootstrap
{
protected function _initLeftMenu()
{
$this->bootstrap('View');
$view = $this->getResource('View');
$view->render('index/_left_menu.phtml'); // <-- here error
}
}
have a problem with $view->render
Fatal error: Uncaught exception 'Zend_View_Exception' with message 'no view script directory set; unable to determine location for view script' in C:\ZendFramework\library\Zend\View\开发者_StackOverflow社区Abstract.php:973 Stack trace: #0 C:\ZendFramework\library\Zend\View\Abstract.php(884): Zend_View_Abstract->_script('_left_menu.phtm...') #1 E:\www\money2\application\modules\test\Bootstrap.php(19): Zend_View_Abstract->render('_left_menu.phtm...') #2 C:\ZendFramework\library\Zend\Application\Bootstrap\BootstrapAbstract.php(667): Test_Bootstrap->_initLeftMenu() #3 C:\ZendFramework\library\Zend\Application\Bootstrap\BootstrapAbstract.php(620): Zend_Application_Bootstrap_BootstrapAbstract->_executeResource('leftmenu') #4 C:\ZendFramework\library\Zend\Application\Bootstrap\BootstrapAbstract.php(584): Zend_Application_Bootstrap_BootstrapAbstract->_bootstrap(NULL) #5 C:\ZendFramework\library\Zend\Application\Resource\Modules.php(124): Zend_Application_Bootstrap_BootstrapAbstract->bootstrap() #6 C:\ZendFramework\library\Zend\Application\Resource\Mod in C:\ZendFramework\library\Zend\View\Abstract.php on line 973
any idea?
find own salvation: application.ini
test.resources.view.basePath = APPLICATION_PATH "/modules/test/views/"
remove test.resources.view[] =
View resource in module replaces view from main bootstrap.
Hint:
$this->getApplication();
in module bootstrap will return main bootstrap
Use it to bootstrap and retrieve view.
class Test_Bootstrap extends Zend_Application_Module_Bootstrap
{
protected function _initLeftMenu()
{
//main bootstrap, injected by modules resource
$bootstrap = $this->getApplication();
$bootstrap->bootstrap('View');
$view = $bootstrap->getResource('View');
$view->render('index/_left_menu.phtml'); // <-- here error
}
}
btw, bootstrap isn't a good place to render something. Consider moving it to more appropriate places. Action helper for example.
Also check this blog post
精彩评论