我是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; ?>
答案 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');
还要考虑为什么在视图中需要这种结构。如果视图不需要,您可以不提供内容吗?所以你在控制器中做出决定。这使得大多数情况下视图更加干净,视图中所需的数据量最少。