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