layout.phtml:
<?php echo $this->doctype() ?>
<html>
<head>
<?php echo $this->headTitle()."n"; ?>
<?php echo $this->headLink() ."n"; ?>
<?php echo $this->headScript(); ?>
</head>
<body>
<div id="wrap">
<div class="header">
<div class="logo"><a href="index.html"><img src="../../images/logo.gif" alt="" title="" border="0" /></a></div>
<div id="menu">
<ul>
<li class="selected"><a href="index.html">home</a></li>
<li><a href="about.phtml">about us</a></li>
<li><a href="category.phtml">books</a></li>
<li><a href="specials.phtml">specials books</a></li>
<li><a href="myaccount.phtml">my accout</a></li>
<li><a href="register.phtml">register</a></li>
<li><a href="details.phtml">prices</a></li>
<li><a href="contact.phtml">contact</a></li>
<li><a href="addbook.phtml">adddbook</a> </li>
</ul>
</div>
</div>
<div class="center_content">
<div class="left_content">
<?php echo $this->layout()->content ?>
我是zend框架的新手,在这里我面临着显示导航的问题。在纯php中,我可以通过检查会话来提供导航。像这样:
<?php
if($_SESSION['usertype']=='admin')
{
echo "<li><a href="addbook.phtml">adddbook</a> </li>";
}
?>
我的问题是如何在zend框架中实现这一点。感谢
您可以通过多种方式实现这一点,如Zend_Auth,但接近$_SESSION方法的方法是使用Zend_SESSION。
首先,在将任何输出发送到浏览器之前,您需要启动Zend_Session,就像正常的php会话一样。我在设置了所有的路径和自动加载器之后,就在我的index.php中完成了这项工作。
Zend_Session::start();
下一步是为用户信息创建一个名称空间,并将相关信息添加到其中,最好是在对用户进行身份验证时。
$userInfo = new Zend_Session_Namespace('userInfo');
$userInfo->userType = 'admin';
这相当于设置$_SESSION['userInfo']['userType']='admin';
最后,获取布局中的信息:
<?php
$userInfo = new Zend_Session_Namespace('userInfo');
if($userInfo->userType=='admin')
{
echo "<li><a href="addbook.phtml">addbook</a> </li>";
}
?>
阅读此链接了解更多信息http://framework.zend.com/manual/en/zend.session.html
如果要检查用户角色,可以使用框架提供的类Zend_Auth
。您可以检查用户的凭据,然后影响其角色。
要检索此角色,您可以使用Zend_Auth实例检查用户的身份:
$identity = Zend_Auth::getInstance()->getIdentity();
if (strcmp($identity->role, "admin") == 0) {
echo '<li><a href="addbook.phtml">adddbook</a> </li>';
}