Moh*_*ari 3 zend-framework view helper zend-form
我尝试这些代码,但不起作用:
$this->getView()->translate("Name"); //not work
$this->_view->translate("Name"); //not work
$this->view->translate("Name"); //not work
Run Code Online (Sandbox Code Playgroud)
首先,Zend_View不是注入Zend_Form.所以当你打电话$this->view或$this->_view它不会工作时,因为没有什么可以回来的.为何getHelper()有效?因为它通过帮助程序代理获取视图(如果您使用的是viewRenderer).看下面的代码:
// Zend/Form.php
public function getView()
{
if (null === $this->_view) {
require_once 'Zend/Controller/Action/HelperBroker.php';
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
$this->setView($viewRenderer->view);
}
return $this->_view;
}
Run Code Online (Sandbox Code Playgroud)
这就是之前$this->_view->translate() 调用的原因getView(),因为它存储为受保护的属性.
根据这个,该代码应该完美地工作,并为我工作:
class My_Form extends Zend_Form
{
public function init()
{
echo $this->getView()->translate('name'); //fires 'translate' view helper and translating value
//below will also work, because you have view now in _view: getView() fetched it.
echo $this->_view->translate("another thing");
}
}
Run Code Online (Sandbox Code Playgroud)
BTW.如果您使用翻译助手来翻译标签或字段名称,则不必.如果你将translator对象设置为静态属性Zend_Form,最好在你的bootstrap中就足够了:
Zend_Form::setDefaultTranslator($translator);
Run Code Online (Sandbox Code Playgroud)
从那时起,所有字段名称和标签都将自动翻译.