в моей странице макета 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
Таким образом, это код, который бросает ошибку «не-объект»:
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')),