如何在zend布局中检查会话

时间:2012-07-11 07:10:32

标签: zend-framework

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框架中实现它。感谢

2 个答案:

答案 0 :(得分:2)

你可以用Zend_Auth等多种方式执行此操作,但$ _SESSION方法的关闭是使用Zend_Session。

首先,您需要在任何输出发送到浏览器之前启动Zend_Session ,就像普通的php会话一样。我在设置所有路径和自动加载器后立即在index.php中执行此操作。

Zend_Session::start();

下一步是为用户信息创建命名空间并向其添加相关信息,最好在您对用户进行身份验证时。

$userInfo = new Zend_Session_Namespace('userInfo');
$userInfo->userType = 'admin';

这相当于设置$ _SESSION [&#39; userInfo&#39;] [&#39; userType&#39;] =&#39; admin&#39;;

最后,获取布局中的信息:

<?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

答案 1 :(得分:1)

如果要检查用户角色,可以使用框架提供的类Zend_Auth。您可以检查用户的凭据,然后将其作为一个角色。

要检索此角色,您可以使用Zend_Auth实例检查用户的身份:

$identity = Zend_Auth::getInstance()->getIdentity();
if (strcmp($identity->role, "admin") == 0) {
    echo '<li><a href="addbook.phtml">adddbook</a> </li>';
}