shi*_*va8 3 bootstrapping zend-framework module autoload
我有一个非常奇怪的情况,我的模块正在工作,但我的模块的boostrap没有被加载.
这是我的application.ini中用于模块自动加载的段:
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules[] = ""
Run Code Online (Sandbox Code Playgroud)
这是引导程序:
protected function _initAutoload()
{
$autoloader = new Zend_Application_Module_Autoloader(array(
'namespace' => 'User_',
'basePath' => APPLICATION_PATH .'/modules/user',
'resourceTypes' => array (
'model' => array(
'path' => 'models',
'namespace' => 'Model',
)
)
));
}
Run Code Online (Sandbox Code Playgroud)
我模块的结构
Application
--modules
----user
------config/
------controllers/
------models/
------views/
------Bootstrap.php
----admin
Run Code Online (Sandbox Code Playgroud)
这里的问题是没有加载User_Bootstrap.
<?php
class User_Bootstrap extends Zend_Application_Module_Bootstrap
{
protected function _initAutoload()
{
Zend_Registry::set('debug', 'haha');
}
}
Run Code Online (Sandbox Code Playgroud)
通过在任何控制器上执行Zend_Registry :: get('debug'),它无法识别该密钥是在模块引导程序中设置的.实际上,User_Bootstrap中的任何语法错误都不起作用.
我不知道为什么User_Bootstrap没有被自动加载.这让我抓狂,因为我已经研究了5个小时甚至无法获得一篇关于这个案例的博文...
说到这些,我的模型和控制器类正在自动加载.
试试以下......
更改您application.ini要使用的文件
; lose the quotes
resources.modules[] =
Run Code Online (Sandbox Code Playgroud)
_initAutoload()从Application Bootstrap类中删除该方法.您不需要这个,因为模块引导程序会自动为您的User_类创建资源加载器