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

$this->Session->read('Auth.User.id')Cakephp では、ビューで直接使用することはできません。コントローラーでこれを行う方がよいでしょう。

$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 に答える