0

我是 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; ?> 
4

2 回答 2

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);

是你想要的吗?

于 2012-11-08T15:34:07.273 回答
0

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

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

然后您可以在您的视图中执行以下操作:

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

还要考虑一下为什么在您的观点中需要这种结构。如果视图不需要内容,也许您可​​以不提供内容?因此,您在控制器中做出决定。这使得大多数时候视图更清晰,视图中所需的数据量最少。

于 2012-11-08T18:00:08.453 回答