2010-03-29 3 views

Antwort

3

Entweder durch die Frontcontroller

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

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

oder Registry:

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

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

Da jedoch Zugriff auf die API von Google Maps etwas ist, das in dem Modell der Fall ist, müssen Sie Ihre Controller sollte nicht wissen, API-Schlüssel.

+0

Gibt es eine Möglichkeit, es nur zu lesen, wenn ich es brauche? Ich habe versucht, es im Bootstrap bei jeder Anfrage zu vermeiden, da es nur auf einem kleinen Bruchteil der Seiten – Ryan

+0

@Ryan der Bootstrap und application.ini wird sowieso bei jeder Anfrage aufgerufen werden, so dass Sie nichts als vielleicht eine Mikrosekunde, indem ich es nicht so mache. Wenn Sie die application.ini bei Bedarf laden würden, hätten Sie eine zusätzliche E/A-Anfrage. Das ist viel langsamer. – Gordon

+0

Dank Gordon, das macht sehr viel Sinn. Ich bin verwirrt darüber, wie dies in dem Modell gehen würde. Ich plante, einen Provider (aka "Model") für Google Maps zu erstellen, aber letztendlich brauche ich ihn in der Ansicht, um ihn über die JavaScript-API-Anfrage an Google weiterzugeben. – Ryan

5

This Artikel könnte Ihnen helfen. Der Autor erklärt, wie Gmail-Verbindungsparameter aus der Datei application.ini abgerufen werden.

Sie könnten versuchen wollen:

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

Wenn Sie in einem Frontcontroller sind, ist dies eine gute Lösung. Eine ganze Reihe von Optionen finden Sie hier: http://akrabat.com/zend-framework/accessing-your-configuration-data-in-application-ini/ –

5

Ich neige dazu, dies in der Bootstrap zu tun, und dann als Gordon erwähnt es in der Registrierung werfen. Sie können es dann überall aus der Registrierung holen.

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

Auch zu seinem Punkt würde der Controller dazu neigen, der falsche Ort für sie zu sein, wenn Sie die API mit mehreren Schlüsseln zugreifen, denke ich, aber selbst dann sollten Sie in der Lage sein, die Logik zu platzieren das Modell, um einen Schlüssel aus der Registrierung auszuwählen.

Verwandte Themen