1

Bootstrap.php ファイルにオブジェクトを設定しようとしていて、これをすべてのビュー phtml ファイルで使用できるようにしたいと考えています。

例として、次のように _init 関数で Zend_Translate を設定します。

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 = $translate; だと思っていたでしょう。ビューで $translate オブジェクトを使用できるようにするには十分ですが、layout.phtml でしかアクセスできません

Zend Frameworkは比較的新しく、この問題は以前に他の人に出てきたと思いますが、私のインターネット調査では答えが得られなかったので、ここの誰かが私を正しい方向に向けてくれることを望んでいましたか?

4

2 に答える 2

2

Bootstrap で Zend_Translate を Zend_Registry に設定するだけで、任意の phml で翻訳ビュー ヘルパーを使用できます。

この行を最後に置きます。

Zend_Registry::set('Zend_Translate', $translate);
于 2012-04-23T12:19:41.783 に答える
0

答えは見つかりましたが、次のようにしてブートストラップのビュー リソースにアクセスできます。

$this->bootstrap('view');
$view = $this->getResource('view');
于 2012-04-23T20:57:39.910 に答える