我一直在尝试在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的人来说,他认为这个问题已经出现在其他人之前,但是我的互联网研究没有给我一个答案,所以我希望有人能指出我正确的方向吗?
答案 0 :(得分:2)
你只需要在Bootstrap中将Zend_Translate设置为Zend_Registry,你就可以在任何phml中使用translate view helper。
把这一行放在最后:
Zend_Registry::set('Zend_Translate', $translate);
答案 1 :(得分:0)
虽然您已找到答案,但您可以使用以下命令访问引导程序中的视图资源:
$this->bootstrap('view');
$view = $this->getResource('view');