根据所选页面禁用CakePHP中的特定div

时间:2012-11-08 15:11:46

标签: cakephp

我是CakePHP的新手,我需要你的帮助。我需要在特定页面(即我的主页)上显示特定小部件,其格式为div,并在其余页面上禁用。基本上我已经能够根据登录状态专门显示特定的div,如下所示:

            <?php if (!$this->Session->read('Auth.User.id')): ?>
                <div class="register link right <?php if ($active == 'register') echo 'active'; ?>"><?php echo $html->link('Register', array('controller' => 'users', 'action' => 'register')); ?></div>
                <div class="login link right <?php if ($active == 'login') echo 'active'; ?>"><?php echo $html->link('Login', array('controller' => 'users', 'action' => 'login')); ?></div>
            <?php else: ?>
                <div class="logout link right"><?php echo $html->link('Logout', array('controller' => 'users', 'action' => 'logout')); ?></div>
                <div class="myaccount link right <?php if ($active == 'myaccount') echo 'active'; ?>"><?php echo $html->link('My account', array('controller' => 'account', 'action' => 'summary')); ?></div>
            <?php endif; ?> 

我在根据我的主页选择显示特定div时要求任何帮助。

下面的伪代码表明我正在考虑解决这个问题:

 <?php if (the selected page is homepage or default.ctp)?> 
     // set the display property for the desired div to none
 <?php else: ?>
     // do not set the display property for the desired div to none
 <?php endif; ?> 

2 个答案:

答案 0 :(得分:1)

在cakephp中你不能直接在你的视图中使用$this->Session->read('Auth.User.id'),这样做更适合你的控制器:

$this->set('authUser', $this->Auth->user());

并进入您的视图

if (!$authUser)
{
    //not logged
}
else{
    //logged
}

如果您想检查哪个页面可以尝试类似的内容

echo Router::url($this->last, true);

你想要的是什么?

答案 1 :(得分:0)

在您的控制器中,您可以定义如下内容:

$this->set('pageName', $pageName);

然后你可以在你看来做:

$class='';
if($pageName=='homepage') {
    $class=' hide';
}
echo $this->Html->div($class, 'your content here');

还要考虑为什么在视图中需要这种结构。如果视图不需要,您可以不提供内容吗?所以你在控制器中做出决定。这使得大多数情况下视图更加干净,视图中所需的数据量最少。