2011-07-15 93 views
1

我正在使用PHP和Zend Framwwork開發Web應用程序,並且我想在我的應用程序中實現登錄和註銷概念。在第一步中,我創建了運行良好的認證適配器並對用戶進行了身份驗證。 在應用程序中有一個菜單欄,其中有一個用於登錄的錨標籤。點擊登錄鏈接後,登錄頁面出現。 現在我的問題是,我希望當用戶使用他/她的有效憑證登錄時,然後菜單中的登錄文本將更改爲註銷,當用戶註銷時,它將變回登錄狀態。在zend框架中登錄和註銷

回答

4

對於這樣的任務,我有檢查,如果用戶登錄或不profileLink視圖助手,並顯示相應的消息:

/** 
* ProfileLink helper 
* 
* Call as $this->profileLink() in your layout script 
*/ 
class My_View_Helper_ProfileLink extends Zend_View_Helper_Abstract { 


    /** 
    * View instance 
    * 
    * @var Zend_View_Interface 
    */ 
    public $view; 


    public function profileLink() { 

     $baseUrl = $this->view->baseUrl(); 

     $auth = Zend_Auth::getInstance(); 

     $html = '<a href="'.$baseUrl.'/login">'. $this->view->translate('Login') .'</a>'; 

     if ($auth->hasIdentity()) { 
      // here have to make amendments to what you have 
      // in your identity. 
      $identity = $auth->getIdentity();       
      $fname = $identity->property->nickname; 
      $url = $this->view->baseUrl('/user'); 
      $fnameLink = "<a href=\"$url\"/>$fname</a>"; 
      $html = $fnameLink . ' <span>|</span> <a href="'.$baseUrl.'/logout">' 
       . $this->view->translate('Logout') . '</a>' ; 
     } 

     return $html; 
    } 


    /** 
    * Get Zend_View instance 
    * 
    * @param Zend_View_Interface $view 
    */ 
    public function setView(Zend_View_Interface $view) { 
     $this->view = $view; 
    } 

} 

維特此,在layout.phtml我只是有:

<?php echo $this->profileLink(); ?> 

視圖助手是我在網絡中找到的一個修改版本(我沒有鏈接到原始版本)。

希望這對你有用。

+0

當然,我的視圖助手的功能也是類似的。但在註銷的情況下,我顯示登錄和註冊的鏈接;在登錄的情況下,我顯示配置文件和註銷的鏈接。 –

0

如果你使用Zend Framework 1.12您發現錯誤消息是這樣的:

插件的名字「ProfileLink」在註冊表中未找到;

爲了解決這個問題,我已經取代Zend的希望這會幫助你。