Yii :: app () -> user-> isAdmin () неправильно работает на странице макета

в моей странице макета Cmenu visible fn Yii::app()->user->isAdmin() не работает должным образом, когда я использую 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

страница с ошибкой

Solutions Collecting From Web of "Yii :: app () -> user-> isAdmin () неправильно работает на странице макета"

Таким образом, это код, который бросает ошибку «не-объект»:

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

Это означает, что, когда PHP пытается получить атрибут role объекта $user , $user фактически не является объектом. Если вы loadUser() на свой код, это означает, что либо loadUser() работает некорректно, либо Yii::app()->user->id не возвращает идентификатор пользователя.

Чтобы проверить это, я бы добавил это к вашей функции, поэтому некоторые тестовые переменные будут распечатаны:

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

Это позволит вам увидеть, если вы получаете идентификатор пользователя, и если пользователь загружается должным образом.

Удачи!

Используйте Yii::app()->user->getName()=='username' если вы хотите проверить конкретного пользователя.

Вы можете попробовать следующее:
array('label' => 'Master', 'url' => array('/site/master'), 'visible' => Yii::app()->user->checkAccess(array('admin')),