2011-08-02 38 views
0

我有一個有一個助手文件夾中的我的意見與一個叫Log.php /views/helpers/log.phpZend的,我不能調用任何視圖助手

幫手其中包含的文件夾:

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 - > _ helpers-> log-> loggedAs();

但犯規顯示什麼,只是一個錯誤:致命錯誤:調用一個成員函數loggedAs()在...一個非對象

回答

1

我在採埃孚有一點經驗。昨天我遇到了同樣的問題,我決定使用下面的代碼。 在主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"); 
} 

之後,鑑於文件I用下一個語法

$this->getPhoneString($value['per_telephone_number']); 

其中getPhoneString方法在我的幫助器類My_Helper_View_GetPhoneString

希望這個例子對你有用:)

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,但是你做的方式也應該如此。

+0

試過了,即時通訊:在註冊表中找不到名爲'LoggedAs'的插件;使用路徑:Zend_View_Helper –