在zend框架中登录和注销

时间:2011-07-15 10:34:43

标签: php zend-framework

我正在使用PHP和Zend Framwwork开发Web应用程序,我想在我的应用程序中实现登录和注销概念。在第一步中,我创建了运行良好并验证用户身份的auth适配器。                       应用程序中有一个菜单栏,我有一个用于登录的锚标记。单击登录链接后,将显示登录页面。                       现在我的问题是,我希望当用户使用他/她的有效凭据登录时,菜单中的登录文本将更改为注销,当用户注销时,它将更改回登录。

2 个答案:

答案 0 :(得分: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(); ?>

视图帮助器是我在网络中找到的那个的修改版本(我没有到原始版本的链接)。

希望这对你有用。

答案 1 :(得分:0)

如果您使用的是Zend Framework 1.12,则会发现类似这样的错误消息:

在注册表中找不到名称'ProfileLink'的插件;

要解决此问题,我已将我的替换为 Zend ,希望这会对您有所帮助。