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の新機能ですが、この問題は以前は他の人に伝わっていましたが、私に答えを与えて、ここの誰かが私に正しい方向を向けることを望んでいたのですか?
こんにちはイワン、に感謝を回答!これは、すべてのビューでZend_Registryから取得しなければならないことを意味します。すべてのビューで使用されるように、毎回初期化することなく、直ちにすべてのビューで$ translateを利用できるようにしたいと考えていました。 – j2dab
いいえ、translate view helperを使用するだけで初期化する必要はありません。 例:phtmlで次のように試してください。 <?php echo $ this-> translate( "Label");?> ラベルの翻訳が印刷されます。 このヘルパーの詳細については、 http://framework.zend.com/manual/en/zend.view.helpers.html –
で知ることができます。どうもありがとうございます!! – j2dab