Yii :: app () -> user-> isAdmin () не работает должным образом на странице макета - PullRequest
2 голосов
/ 15 февраля 2012

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

4 голосов
/ 16 февраля 2012

Итак, это код, который выдает ошибку «необъект»:

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

Это означает, что когда PHP пытается получить атрибут role объекта $user, $user на самом деле не объект.Если посмотреть на ваш код, это означает, что либо 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();
}

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

Удачи!

3 голосов
/ 21 июня 2012

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

0 голосов
/ 27 сентября 2013

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...