2012-04-23 23 views
1

Bootstrap.phpファイルにオブジェクトを設定しようとしましたが、これをすべてのビューのphtmlファイルで使用したいと考えています。次のように私は_init関数でZend_Translateのセットアップ例としてZend Framework - ビューストラップに設定されたビューオブジェクトがビューにありませんphtmlファイル

function _initTranslations() { 
    $this->bootstrap('layout'); 
    $layout = $this->getResource('layout'); 
    $view = $layout->getView(); 

    $translate = new Zend_Translate('gettext', 
            APPLICATION_PATH.'/languages', 
            null, 
            array('scan' => Zend_Translate::LOCALE_FILENAME)); 
    $session = new Zend_Session_Namespace('translation'); // get session to check if user set lang 
    $locale = new Zend_Locale(); 
    if (isset($session->language)) { 
     // if user has previously set the lang we use this setting 
     $requestedLanguage = $session->language; 
     $locale->setLocale($requestedLanguage); 
    } else { 
     // otherwise we use the browser's setting 
     $locale->setLocale(Zend_Locale::BROWSER); 
     $requestedLanguage = key($locale->getBrowser()); 
    } 
    if (in_array($requestedLanguage, $translate->getList())) { 
     $language = $requestedLanguage; 
    } else { 
     $language = 'en'; 
    } 
    Zend_Registry::set('locale', $locale); 
    $translate->setLocale($language); 
    $view->translate = $translate; 
} 

私はします$ view->は翻訳= $変換することを考えているだろう。 $ translateオブジェクトを私のビューで利用できるようにするには十分ですが、layout.phtmlでしかアクセスできません。

Zend Frameworkの新機能ですが、この問題は以前は他の人に伝わっていましたが、私に答えを与えて、ここの誰かが私に正しい方向を向けることを望んでいたのですか?

答えて

2

BootstrapでZend_TranslateをZend_Registryに設定するだけで、任意のphmlでtranslate viewヘルパーを使用することができます。

末尾に次の行を入れて:

Zend_Registry::set('Zend_Translate', $translate); 
+0

こんにちはイワン、に感謝を回答!これは、すべてのビューでZend_Registryから取得しなければならないことを意味します。すべてのビューで使用されるように、毎回初期化することなく、直ちにすべてのビューで$ translateを利用できるようにしたいと考えていました。 – j2dab

+0

いいえ、translate view helperを使用するだけで初期化する必要はありません。 例:phtmlで次のように試してください。 <?php echo $ this-> translate( "Label");?> ラベルの翻訳が印刷されます。 このヘルパーの詳細については、 http://framework.zend.com/manual/en/zend.view.helpers.html –

+0

で知ることができます。どうもありがとうございます!! – j2dab

0

、あなたの答えを見つけましたが、あなたがフォローしてブートストラップでビューリソースにアクセスすることができます。

$this->bootstrap('view'); 
$view = $this->getResource('view'); 
関連する問題