我試試這個代碼,但不工作:通話助手從Zend_Form的
$this->getView()->translate("Name"); //not work
$this->_view->translate("Name"); //not work
$this->view->translate("Name"); //not work
我試試這個代碼,但不工作:通話助手從Zend_Form的
$this->getView()->translate("Name"); //not work
$this->_view->translate("Name"); //not work
$this->view->translate("Name"); //not work
首先,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;
}
這就是爲什麼的作品,如果你之前打電話getView()
,因爲它保存爲保護財產。 BTW
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");
}
}
:
據此,該代碼應該完美,作品爲我工作。如果您使用翻譯助手來翻譯標籤或字段名稱,則不需要。就足夠了,如果你設置的翻譯對象的Zend_Form
,最好在你的引導程序的靜態屬性:
Zend_Form::setDefaultTranslator($translator);
從那個時候所有字段名稱和標籤會被自動翻譯。
我不無原因,但是當我添加此功能,我的形式,它的工作:
public function init() {
$this->getView();
}
這條線的工作原理:
$this->_view->translate("Name");
的觀點是沒有注入Zend_Form(不要問我爲什麼,什麼時候需要渲染)。你必須擴展Zend_Form並在你自己內部注入視圖。其他選項是使用FrontController-> getInstance()> getStaticHelper> viewRenderer並從中接收視圖。