Zend Framework - 从Controller读取Application.ini值

Rya*_*yan 5 configuration zend-framework web-applications

我正在尝试将我的Google Maps API密钥存储在我的application.ini文件中,并且我希望能够在需要时从我的控制器中读取它.如何从控制器中读取application.ini中的值?

谢谢!

Tho*_*mas 5

这篇文章可能会帮到你.作者解释了如何从application.ini文件中检索gmail连接参数.

您可能想尝试:

$bootstrap = $this->getInvokeArg('bootstrap');
$aConfig = $bootstrap->getOptions();
googleMapsKey = $aConfig['your_resource']['your_key'];
Run Code Online (Sandbox Code Playgroud)

  • 如果你在前置控制器中,这是一个很好的解决方案.这里有一整套选项:http://akrabat.com/zend-framework/accessing-your-configuration-data-in-application-ini/ (3认同)

who*_*ton 5

我倾向于在引导程序中执行此操作,然后戈登提到将其丢入注册表中.然后,您可以在注册表中的任何位置获取它.

$this->config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/application.ini', APPLICATION_ENV);
Zend_Registry::set('config', $this->config);
Run Code Online (Sandbox Code Playgroud)

此外,对于他的观点,控制器往往是错误的地方,除非你使用多个密钥访问API,我猜,但即便如此,你应该能够在模型中放置逻辑以从中选择一个密钥注册表.


Gor*_*don 3

通过 FrontController

// bootstrap
$front->setParam('GMapsApiKey', 123456);

// controller
$this->getFrontController()->getParam('GMapsApiKey');
Run Code Online (Sandbox Code Playgroud)

或注册表:

// bootstrap
Zend_Registry::set('GMapsApiKey', '123456');

// controller
Zend_Registry::get('GMapsApiKey');
Run Code Online (Sandbox Code Playgroud)

但是,由于对 Google Maps API 的访问是在模型中发生的,因此您的控制器不需要知道 API 密钥。