2012-03-05 59 views
2

我正在考虑把它放在AppController中,但这意味着我必须在每个视图文件中为此使用相同的代码。我想把它放在标题中,以便在每个视图上显示。我也希望在那里有一些逻辑,如果我登录,然后只显示注销链接和我的用户菜单。同样,如果我没有登录,然后显示注册和登录链接。任何人都可以给我一只手,或者指向正确的方向吗?谢谢!包含CakePHP登录/注销链接的最佳方式是什么?

回答

5
//layout .ctp 

<div class="header"> 
<?php 
if($this->Session->read('Auth')) { 
    // user is logged in, show logout..user menu etc 
    echo $this->Html->link('Logout', array('controller' => 'users', 'action' => 'logout')); 
} else { 
    // the user is not logged in 
    echo $this->Html->link('Login', array('controller' => 'users', 'action' => 'login')); 
} 
?> 
</div> 

是单向的。如果代码位于您的layout中,它将出现在每个view中,否定冗余代码。

+0

哦,我明白了。 Layout.ctp是要走的路。 layout.ctp的伴随控制器是什么? – Strawberry 2012-03-05 11:21:20

+0

每个视图使用布局;您根据需要定义。没有专门针对'layout'的控制器。默认布局文件被称为'default.ctp',默认情况下所有视图都使用。您可以通过在控制器中使用'$ this-> layout ='layout_name'''来调整每个视图的布局(或者我相信)。 – Ross 2012-03-05 11:26:37

0

蛋糕3,您需要使用:

$this->request->session()->read('Auth')