Ну, это не сработает, потому что он знает Yii :: app () -> user как CWebUser Instance, и вы разработали класс UserIdentity, поэтому он сказал бы, что CWebUser и его поведение не имеют метода или замыкания с именем "isAdmin «'! Чтобы использовать такие выражения, как $ user-> isAdmin, вы должны установить свойство isAdmin, бросив команду setState, которая будет использовать сеанс, чтобы сохранить его, как правило, в методе аутентификации, чтобы это было что-то вроде этого:
class UserIdentity extends CUserIdentity
{
public function authenticate()
{
//your authentication code
//using your functions like $level=$this->isTeacher();
//or $level=$this->isAdmin();
$this->setState('isAdmin',$level);
}
}
и теперь в пользовательском контроллере в методе accessRules вы можете иметь выражения
public function accessRules()
{
return array(
array('allow',
'actions'=>array('action1','action2',...),
'expression'=>'$user->isAdmin',
//or Yii::app()->user->getState('isAdmin'),
),
//...
);
}