2010-03-29 29 views

Respuesta

3

sea a través del FrontController

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

// controller 
$this->getFrontController()->getParam('GMapsApiKey'); 

o Registro:

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

// controller 
Zend_Registry::get('GMapsApiKey'); 

Sin embargo, dado que el acceso a la API de Google Maps es algo que sucede en el modelo, el controlador no debe necesidad de conocer la Clave API.

+0

¿Hay alguna manera de simplemente leerlo cuando lo necesito? Estaba tratando de evitar hacerlo en el bootstrap en cada solicitud, ya que solo será necesario en una pequeña fracción de las páginas – Ryan

+0

@Ryan, bootstrap y application.ini se llamarán en cada solicitud de todos modos, por lo que no gana nada, pero tal vez una microsegundo al no hacerlo de esta manera. Si cargara la solicitud.ini a pedido, tendría una solicitud de E/S adicional. Eso es mucho más lento. – Gordon

+0

Gracias Gordon, eso tiene mucho sentido. Sin embargo, estoy confundido sobre cómo sería esto en el modelo. Estaba planeando crear un proveedor (también conocido como "modelo") para Google Maps, pero al final lo necesito en la vista para pasarlo a Google a través de la solicitud de la API de JavaScript. – Ryan

5

This artículo podría ayudarlo. El autor explica cómo recuperar los parámetros de conexión de Gmail desde el archivo application.ini.

Es posible que desee probar:

$bootstrap = $this->getInvokeArg('bootstrap'); 
$aConfig = $bootstrap->getOptions(); 
googleMapsKey = $aConfig['your_resource']['your_key']; 
+3

Si está en un controlador frontal esta es una buena solución. Un conjunto completo de opciones está aquí: http://akrabat.com/zend-framework/accessing-your-configuration-data-in-application-ini/ –

5

que tienden a hacer esto en el arranque, y luego como Gordon menciona echar en el registro. A continuación, puede obtenerlo en cualquier lugar fuera del registro.

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

Además, a este punto, el controlador tendería a ser el lugar equivocado para ello, a menos que se accede a la API con varias claves, supongo, pero incluso entonces usted debería ser capaz de colocar la lógica de el modelo para seleccionar una clave del registro.

Cuestiones relacionadas