我的视图文件夹中有一个帮助文件夹,其中包含一个名为Log.php的帮助程序 /views/helpers/log.php
包含:
class Zend_View_Helper_Log extends Zend_View_Helper_Abstract
{
public function loggedAs ()
{
$auth = Zend_Auth::getInstance();
if ($auth->hasIdentity()) {
$username = $auth->getIdentity()->uname;
$logoutUrl = $this->view->url(array('controller'=>'auth', 'action'=>'logout'), null, true);
return 'Hello' . $username . '. <a href="'.$logouturl.'">Logout?</a>';
}
}
}
我如何从布局中调用它?或观点?我尝试了$ this-&gt; _helpers-&gt; log-&gt; loggedAs();
但不显示任何内容,只是一个错误:致命错误:在...中的非对象上调用一个成员函数loggedAs()
答案 0 :(得分:1)
我对ZF有一点经验。昨天我有同样的问题,我决定使用以下代码。 在主Bootstrap.php我定义了帮助器路径和前缀
protected function _initDoctype()
{
$this->bootstrap('view');
$view = $this->getResource('view');
$view->doctype('XHTML1_STRICT');
$view->addHelperPath(APPLICATION_PATH . "/../library/My/Helper/View", "My_Helper_View");
}
之后在视图文件中我使用了下一个语法
$this->getPhoneString($value['per_telephone_number']);
我的帮助程序类中的 getPhoneString 方法 My_Helper_View_GetPhoneString
希望这个例子对你有用:)
答案 1 :(得分:0)
你的助手类应该有一个与助手名称相匹配的方法,这就是你所说的。因此,如果您想从模板中调用loggedAs()
,那么您应该为您的帮助者命名:
class Zend_View_Helper_LoggedAs extends Zend_View_Helper_Abstract
{
public function loggedAs()
{
$auth = Zend_Auth::getInstance();
if ($auth->hasIdentity()) {
$username = $auth->getIdentity()->uname;
$logoutUrl = $this->view->url(array('controller'=>'auth', 'action'=>'logout'), null, true);
return 'Hello' . $username . '. <a href="'.$logouturl.'">Logout?</a>';
}
}
}
这应该存在于application/views/helpers/LoggedAs.php
的文件中,您可以在模板中调用它,如下所示:
<?=$this->loggedAs()?>
我还建议在类名中使用自己的命名空间而不是Zend,但是你完成它的方式应该也可以。