Zend framework 更改zend framework中application.ini参数的值
我正在研究Zend框架,并使用基于模块的多数据库结构 我通过application.ini中的multidb方法使用多个数据库 我的应用程序.ini看起来像Zend framework 更改zend framework中application.ini参数的值,zend-framework,Zend Framework,我正在研究Zend框架,并使用基于模块的多数据库结构 我通过application.ini中的multidb方法使用多个数据库 我的应用程序.ini看起来像 resources.multidb.primary.adapter = PDO_MYSQL resources.multidb.primary.host = localhost resources.multidb.primary.username = root resources.multidb.primary.password = 123
resources.multidb.primary.adapter = PDO_MYSQL
resources.multidb.primary.host = localhost
resources.multidb.primary.username = root
resources.multidb.primary.password = 123456
resources.multidb.primary.dbname = tubaah_zend
resources.multidb.primary.default = true
resources.multidb.secondary.adapter = PDO_MYSQL
resources.multidb.secondary.host = localhost
resources.multidb.secondary.username = root
resources.multidb.secondary.password = 123456
resources.multidb.secondary.dbname = tubaah
我想动态设置multidb.primary.default和multidb.secondary.default值,以便为不同的模块使用不同的数据库
我尝试使用中提到的代码
代码片段如下所示:-
$config = new Zend_Config_Ini(APPLICATION_PATH. '/configs/application.ini', 'development', array('allowModifications' => true));
$config->resources->multidb->primary->default = 0;
$config->resources->multidb->secondary->default = 1;
但它不起作用
请帮助我。您不能动态更改application.ini中的参数,因为引导在路由/分派之前发生。配置在引导过程中加载,如果您想根据所选路由更改参数,您已经在路由之后了 第一选项 有几种选择。一个frontController插件,在完成路由(routeShutdown或更高版本)后更改默认数据库适配器。在插件中,您可以执行以下操作:
$db = Zend_Controller_Front::getInstance()
->getParam('bootstrap')
->getResource('multidb')
->getDb('secondary')
Zend_Db_Table::setDefaultAdapter($db);
dbName(在本例中为“secondary”)的选择取决于您的路由(以及模块/控制器/操作)
第二选项
第二,还有另一种选择。您需要使用高级模块应用程序资源,该资源能够处理每个模块的模块配置。有两个人建议使用这样的资源插件:和
为一个模块在application/modules/mymodule/configs/module.ini中放置一个文件
resources.multidb.primary.default = true
resources.multidb.secondary.default = true
在另一个模块中,例如应用程序/模块/anothermodule/configs/module.ini
resources.multidb.primary.default = true
resources.multidb.secondary.default = true
这与第一个选项的结果相同。我认为此代码段不会修改发送到DB适配器的数据。你在引导中使用它?也许可以使用Zend_Db::factory()将您的数据连接设置从.ini设置到bootstrap。Thx Jurian--------我按照您的建议选择了第一个解决方案,它实现了神奇的效果--------再次使用Thx:--)