ZEND_Auth,停用导航区域

ZEND_Auth, deactivate navigation area

我使用 Zend_Auth 构建了一个登录页面。现在我的问题是如何停用加载了 layout.phtml 的区域?

这是我的 layout.phtml 代码的一部分,我不想在我的登录和注销表单中看到它:

<div id="navigation">
    <ul>
            <li><a href="<?php echo $this->url(array('controller'=>'arbeitskalender', 'action'=>'index'), null, false);?>">Arbeitskalender</a></li>
            <li><a href="<?php echo $this->url(array('controller'=>'pdf', 'action'=>'index'));?>">Arbeitskalender download</a></li>
            <!--<li><a href="<?php echo $this->url(array('controller'=>'bibliothek', 'action'=>'index'));?>">Bibliothek</a></li> -->
            <!-- <li><a href="<?php echo $this->url(array('controller'=>'schwestern', 'action'=>'index'));?>">Schwestern</a></li> -->
    </ul>
</div>

如何使用不同的布局?在什么地方以及如何加载它们?

一个应用程序中可以有多个布局。如果您创建另一个没有导航 HTML 并在您的 module.config.php 中配置它,您可以简单地 select 从控制器中使用哪个布局。

'template_map' => array(
    'layout/layout'       => __DIR__ . '/../view/layout/layout.phtml',
    'layout/layout_login' => __DIR__ . '/../view/layout/layout_login.phtml'
)

然后在你的控制器中:

$this->layout('layout/layout_login');

编辑:

或者,如果您想动态更改布局,可以使用 Identity View Helper 检查用户是否已登录。例如

<!-- if logged in, show logout link -->
<?php if (null !== $this->identity()) : ?>
    <a href="/logout">Logout</a>
<?php endif; ?>