2010-03-29 8 views

Odpowiedz

3

Albo poprzez FrontController

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

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

lub rejestru:

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

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

Jednakże, ponieważ dostęp do Google Maps API jest coś, co dzieje się w modelu, kontroler powinien nie trzeba znać Klucz API.

+0

Czy istnieje sposób, aby po prostu go przeczytać, gdy jest to potrzebne? Próbowałem uniknąć tego w bootstrapie na każde żądanie, ponieważ będzie on potrzebny tylko na niewielkiej części stron – Ryan

+0

@Ryan bootstrap i application.ini zostaną wywołane przy każdym żądaniu, tak więc nie zyskasz nic, ale może mikrosekundę, nie robiąc tego w ten sposób. Jeśli załadowałbyś plik application.ini na żądanie, otrzymasz dodatkowe żądanie wejścia/wyjścia. To znacznie wolniej. – Gordon

+0

Dzięki Gordon, to ma wiele sensu. Jestem jednak zdezorientowany, jak to będzie wyglądać w modelu. Planowałem stworzyć dostawcę (zwanego też "modelem") dla Google Maps, ale ostatecznie potrzebuję go w widoku, aby przekazać go do Google za pomocą żądania JavaScript API. – Ryan

5

This artykuł może ci pomóc. Autor wyjaśnia, w jaki sposób pobrać parametry połączenia w Gmailu z pliku application.ini.

Możecie też spróbować:

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

Jeśli korzystasz z kontrolera frontowego, jest to dobre rozwiązanie. Pełny zestaw opcji znajduje się tutaj: http://akrabat.com/zend-framework/accessing-your-configuration-data-in-application-ini/ –

5

staram się robić to w bootstrap, a następnie jako Gordon wspomina wrzucić go w rejestrze. Możesz go wtedy uzyskać w dowolnym miejscu poza rejestrem.

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

Również jego punkcie, kontroler będzie wydają się być złe miejsce dla niego, chyba że dostęp do API z wielu kluczy, myślę, ale nawet wtedy powinno być możliwe, aby umieścić logiki model, aby wybrać klucz z rejestru.