application.ini是ZF中的配置文件.我有一些设置,而不仅仅是ZF手册所写的那些默认设置.但是,如何从我的动作控制器中检索这些参数呢?在会话期间存储此配置的位置更好?
的Bootstrap_Abstract类有getOptions()方法,它返回读取的一个简单的PHP阵列application.ini的文件:
$app = new Zend_Application(APPLICATION_ENV, '/application.ini');
$config = $app->bootstrap()->getOptions();  // $config is a php array of application.ini
而且我想从oop-style获得元素形式:
$param = $config[one][two];  // vs.
$param = $config->one->two;  // like this
ZF有一个Zend_Config_Ini类,它读取.ini并返回ArrayObject.但我想避免读取application.ini有Zend_Config_Ini一个更多的时间后Zend_Application已反正已经阅读.但是,Bootstrap或者Zend_Application类没有提供一些自动创建ArrayObject application.ini.
第二,我可以在哪里存储这个$ config呢?在Zend_Registry?
Zend_Registry::set('config', $config);
然后在我的一些动作控制器中检索它:
$config = Zend_Registry::get('config');  // I retrieve config
$param = $config->one->two;              // I retrieve parameter from it and …如何使用zend_config对象读取application.ini文件中声明的数组.
例如1:supported.prop [] ="abc"supported.prop [] ="def"
当我说$ config-> supported-> prop时,它返回zend_config对象,而我期待返回一个数组.
例如2:supported.prop ="abc"这很简单,你说$ config-> supported-> prop给出字符串"abc".
所以,有人可以帮助我使用例如1,我试图用zend_config对象读取数组.
谢谢
我正在学习ZF2并计划申请.
我想有1个应用程序与几组模块.每组模块最多可包含20多个模块.
我无法保证整个应用程序的任何模块的唯一名称,但我可以保证他们在模块组中的唯一性.
理想情况下使用Hosting路由器将请求路由到模块组.
例如 http://admin.mysite.com/foo/ =>'Admin/Foo/Index/Index',
http://special.mysite.com/foo/ =>'Special/Foo/Index/Index'
想法#1
我希望为每个模块组使用不同的module_path,并为模块组周围的模块路径命名空间,以确定模块类的唯一性.但发送到module_autoloader的模块似乎只关注传递的任何字符串的第一部分.
例如
array('modules' => array(
 'Admin\Admin','Admin\Bob','Admin\Users'
));
这是我不明白的奇怪行为:
我已经设法通过对templateInjecter的一些小改动来解决这个问题,但它似乎很乱.
想法#2
只需将模块名称添加到其子目录中,例如
namespace AdminAdmin\Controller,
class  IndexController {}
思考
题:
我正在创建一个动态应用程序,其中内容通过CMS添加.在CMS内部,我正在设置一个db条目,该条目说明了每个内容页面使用的模块.
NodeId,ParentNodeId,Name_de,Name_en,ModuleName,foreignkey_ContentLinks,
在此表条目中如下所示:6,1,Veranstaltung-21-02-2013,Event-21-02-2013,Events,682
整个树应该在我的导航中结束(完全也在我的路由中).我不想在某个控制器中添加它,因为我的应用程序由一大堆模块组成,我想在所有模块中访问该信息.
我已经尝试在global.php中注入它,但无济于事,因为我不能在我的数据库适配器或该阶段的任何其他重要类.
有关最佳实践的想法或链接吗?
我的项目文件夹是demo,里面有文件夹应用程序,库和公共文件夹.在应用程序文件夹中,我有一个名为configs的文件夹,里面有一个文件'application.ini',其中包含我的数据库参数.因此,在应用程序目录中的bootstrap.php中,我在Zend注册表中的一个函数中设置了我的数据库_initDbAdapter:
$config = new Zend_Config_Ini('/demo/application/configs/application.ini', 'development');
Zend_Registry::set('config', $config);
$db = Zend_Db::factory($config, $config->resources->db->params->asArray());
Zend_register('db', $db);
当我将浏览器指向localhost/demo/public /时(因为我的index.php驻留在公共文件夹中),我收到以下错误:
Fatal error: Uncaught exception 'Zend_Config_Exception' with message 'parse_ini_file(/demo/application/configs/application.ini):
failed to open stream: No such file or directory' in /var/www/demo/library/Zend/Config/Ini.php:182
Stack trace:
#0 /var/www/demo/library/Zend/Config/Ini.php(202): Zend_Config_Ini->_parseIniFile('/demo/applicati...')
#1 /var/www/demo/library/Zend/Config/Ini.php(126): Zend_Config_Ini->_loadIniFile('/demo/applicati...')
#2 /var/www/demo/application/Bootstrap.php(32): Zend_Config_Ini->__construct('/demo/applicati...', 'development')
#3 /var/www/demo/library/Zend/Application/Bootstrap/BootstrapAbstract.php(669): Bootstrap->_initDbAdapter()
#4 /var/www/demo/library/Zend/Application/Bootstrap/BootstrapAbstract.php(622): Zend_Application_Bootstrap_BootstrapAbstract->_executeResource('dbadapter')
#5 /var/www/demo/library/Zend/Application/Bootstrap/BootstrapAbstract.php(586): Zend_Application_Bootstrap_BootstrapAbstract->_bootstrap(NULL)
#6 /var/www/demo/library/Zend/Application.php(355): Zend_Application in /var/www/demo/library/Zend/Config/Ini.php on line 182
我有一个如下结构:
/application
.....
--/modules
----/structure
------/controllers
--------/indexController.php
------/forms
--------/Department.php //here class Structure_Form_Department extends Zend_Form
在indexController.php中
...
public function saveAction()
    {
        $request = $this->getRequest();
        $form = new Structure_Form_Department();//<-- error
....
}
我得到错误
致命错误:未找到类"Structure_Form_Department"
当尝试zf enable form module- 接收:
An Error Has Occurred                         
 This project already has forms enabled.
我认为这是一个配置问题...但不明白我需要做什么...
编辑1
在这里找到了很好的解
但是从某种程度上说,zend开始重复执行_init...默认bootstrap.php中的函数....
我正在寻找在运行时期间用新的配置值覆盖现有配置值的可能性.
所以...... 这样会很好:
$this->serviceLocator->set('Config', $this->config);
有没有办法做到这一点?