【问题标题】:change value of application.ini parameters in zend framework在 zend 框架中更改 application.ini 参数的值
【发布时间】:2011-05-29 08:34:03
【问题描述】:

我正在开发 Zend Framework,并使用基于模块的结构和多个数据库。

我在 application.ini

中通过 multidb 方法使用多个数据库

我的 application.ini 看起来像

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 值,以便我可以为不同的模块使用不同的数据库。

我尝试使用http://framework.zend.com/manual/en/zend.config.theory_of_operation.html 中提到的代码。

sn-p 代码如下:-

$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;

但它不起作用。

请帮帮我。

【问题讨论】:

  • 我认为这个 sn-p 不修改数据女巫被发送到数据库适配器。你在引导程序中使用它?也许将您的数据连接设置从 .ini 引导到使用 Zend_Db::factory()。

标签: zend-framework


【解决方案1】:

您不能即时更改 application.ini 中的参数,因为引导发生在路由/调度之前。配置在引导期间加载,如果您想根据所选路由更改参数,您已经在路由之后。

第一选择

有多种选择。一个 frontController 插件,它在路由完成后更改默认数据库适配器(routeShutdown 或更高版本)。在插件中,您可以执行以下操作:

$db = Zend_Controller_Front::getInstance()
                           ->getParam('bootstrap')
                           ->getResource('multidb')
                           ->getDb('secondary')
Zend_Db_Table::setDefaultAdapter($db);

dbName(在本例中为“辅助”)的选择取决于您的路由(以及模块/控制器/操作)。

第二个选项

其次,还有另一种选择。您需要使用能够处理每个模块的模块配置的高级模块应用程序资源。有两个人推荐过这样的资源插件:Jeroen KeppensMatthijs van den Bos

你在 application/modules/mymodule/configs/module.ini 中为一个模块放置一个文件

resources.multidb.primary.default = true

在另一个模块中,例如应用程序/模块/另一个模块/configs/module.ini

resources.multidb.secondary.default = true

这与第一个选项的结果相同。

【讨论】:

  • Thx Jurian ----------- 我选择了你建议的第一个解决方案,它再次发挥了魔力 ----------- Thx :- )
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-07
  • 2011-07-08
相关资源
最近更新 更多