Yii :: app() - > user-> isAdmin()在布局页面中无法正常工作

时间:2012-02-15 06:52:23

标签: php yii

在我的布局页面中,当我在其他视图中使用Yii::app()->user->isAdmin()显示正确值但不在布局中工作时,Cmenu可见fn Yii::app()->user->isAdmin()无法正常工作。 我在protected / views / layouts / main.php中的代码

    <?php $this->widget('zii.widgets.CMenu',array(
        'items'=>array(
            array('label'=>'Home', 'url'=>array('/site/index'),/*'visible'=>!Yii::app()->user->isGuest*/),
            array('label'=>'Master','url'=>array('/site/master'),'visible'=>Yii::app()->user->isAdmin()),
            array('label'=>'Transaction','url'=>array('/site/transaction'),'visible'=>Yii::app()->user->isAdmin()),
            array('label'=>' Alotted Task','url'=>array('/site/alottedtask'),'visible'=>!Yii::app()->user->isGuest),    
            array('label'=>'Completed Task','url'=>array('/site/completedtask'),'visible'=>!Yii::app()->user->isGuest),
            array('label'=>'Status Update', 'url'=>array('/site/statusupdate'),'visible'=>Yii::app()->user->isAdmin()),

            array('label'=>'Login', 'url'=>array('/site/login'), 'visible'=>Yii::app()->user->isGuest),
            array('label'=>'Logout ('.Yii::app()->user->name.')', 'url'=>array('/site/logout'), 'visible'=>!Yii::app()->user->isGuest)
        ),
    )); ?>

显示错误,如

  

尝试获取非对象的属性

更新

我的错误页面http://localhost/tracktest/index.php

error page

3 个答案:

答案 0 :(得分:4)

所以这是抛出“非对象”错误的代码:

return intval($user->role) == 1;

这意味着当PHP试图获取role对象的$user属性时,$user实际上不是对象。查看代码,这意味着loadUser()无法正常运行,或Yii::app()->user->id未返回用户ID。

为了测试这个,我会将它添加到你的函数中,这样就会打印出一些测试变量:

function isAdmin() { // this should say "public function", btw
  $testId = Yii::app()->user->id;
  echo $testId;
  print_r(User::model()->findByPk($testId));
  die();
}

这可以让你看看你是否获得了用户ID,以及用户是否正确加载。

祝你好运!

答案 1 :(得分:3)

如果要检查特定用户,请使用Yii::app()->user->getName()=='username'

答案 2 :(得分:0)

你可以试试这个:
array('label' => 'Master', 'url' => array('/site/master'), 'visible' => Yii::app()->user->checkAccess(array('admin')),