Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Zend Framework] Zend_Translate
Forum PHP.pl > Forum > PHP > Frameworki
Skyline
Witam

Czy można w jakiś sposob "globalnie" zadeklarowac i dodać słowniki, tak żeby nie tworzyć obiektu każdorazowo w każdym kontrolerze?

Mam taki kod i nie chcialbym go wlepiac w kazdy controller:

  1. <?php
  2. $translate = new Zend_Translate('array', ROOT_DIR . '/modules/default/languages/polish.php', 'pl');
  3. $translate->addTranslation(ROOT_DIR . '/modules/default/languages/english.php', 'en');
  4. $translate->setLocale(self$_lang);
  5. $this->view->translate()->setTranslator($translate);
  6. ?>


Poki co umieszczam go w metodzie init() kontrolera w ktorym wykorzystywane beda tlumaczenia.

Pozdrawiam
LBO
1. Zrób sobie globalny kontroler z którego będzie dziedziczyć reszta.
2. Użyj filtra, czyli plugin do kontrolera, który to będzie robił za Ciebie czytając konfig.
3. Napisz sobie helpera do kontrolera.
Sabistik
Cytat(LBO @ 3.09.2008, 16:39:17 ) *
1. Zrób sobie globalny kontroler z którego będzie dziedziczyć reszta.
2. Użyj filtra, czyli plugin do kontrolera, który to będzie robił za Ciebie czytając konfig.
3. Napisz sobie helpera do kontrolera.


Wystarczy użyć rejestru, przypisując do niego (z indeksem 'Zend_Translate') odpowiednio już skonfigurowany obiekt Zend_Translate.
Martio
Stwórz sobie plugin dla frontowego kontrolera, gdzie będziesz inicjalizował podstawowe obiekty i przechowuj je w rejestrze Zend_Registry.
eai
  1. <?php
  2. class Plugin_Translate extends Zend_Controller_Plugin_Abstract
  3. {
  4.    /**
  5.      * Plugin for translate
  6.      *
  7.      * @param Zend_Controller_Request_Abstract $request
  8.      */
  9.    public function routeStartup(Zend_Controller_Request_Abstract $request)
  10.    {
  11.        $translate = new Zend_Translate('array', ROOT_DIR . '/modules/default/languages/polish.php', 'pl');
  12.        $translate->addTranslation(ROOT_DIR . '/modules/default/languages/english.php', 'en');
  13.        $translate->setLocale(self$_lang);
  14.        $this->view->translate()->setTranslator($translate);
  15.  
  16.        Zend_Registryset('Zend_Translate', $translate);
  17.    }
  18. }
  19. ?>
Sabistik
Nie wiem czy zauważyliście, ale view helper translate sprawdza czy w rejestrze jest klucz 'Zend_Translate', więc powyższe kwiatki są zbędne.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.