使用zend框架创建动态侧边栏

时间:2010-11-09 21:04:01

标签: php zend-framework

我正在尝试在zend框架中创建动态侧边栏。我搜索了一些文章,甚至浏览了stackoverflow存档,但我似乎无法得到它所以请帮我解决这个问题。     这是我的layout.phtml文件中的一些代码:

<div id="contentWrapper">
<div id="contentArea">
<?php echo $this->layout()->content;
?>
</div>
<div id="sidebar">
    <div id="user-authentication">
        <?php if (Zend_Auth::getInstance()->hasIdentity()) {
        ?>Logged In as<br />
        <?php
            echo Zend_Auth::getInstance()->getIdentity();
        } else {
        ?>

            <input type="text" name="login" class="loginInput" /><br/>    
            <input type="password" name="password" class="loginInput" /><br/>    

            <input type="submit" name="submit" value="Log In" class="loginButton" />    
<?php } ?>
    </div>
    <div id="sidebar-content">
                            <? echo $this->layout()->sidebar; ?>
    </div>
</div>

</div>

我可以使用此Best practice creating dynamic sidebar with zend framework但这意味着我需要使用冗余代码来显示登录框/登录为。

2 个答案:

答案 0 :(得分:0)

您是否只是担心侧栏内容div中重复的hasIdentity和getIdentity?

如果是这样,也许你更喜欢这个:

<?php
    $auth = Zend_Auth::getInstance();
    $user = $auth->hasIdentity() ? $auth->getIdentity : NULL;
?>
<div id="user-authentication">
    <?php if ($user) { ?>
        User stuff.
    <?php } else { ?>
        Public stuff.
    <?php } ?>
</div>
<div id="user-authentication">
    <?php if ($user) { ?>
        User stuff.
    <?php } else { ?>
        Public stuff.
    <?php } ?>
</div>

然而,这只是编码风格的问题。检查用户登录状态不止一次没有错。模块化代码必须这样做;这可能就是为什么Zend_Auth是一个单身人士。

答案 1 :(得分:0)

看起来你需要一个小部件:

要显示或不显示某些内容,请查找Zend_AclZend_Navigation的整合 它就像:$container->setAcl($acl)

一样简单