У меня проблема, она может быть маленькой, но я не мог найти решение для этого. Yii: app () -> user-> getId () или Yii: app () -> user-> id не возвращает значение. он просто возвращает пустой результат. Но я установил идентификатор в свой класс UserIdentity.
в моем классе UserIdentity у меня это,
public function getId() { return $this->id; }
Я устанавливаю id в функции autheticate (). если я сам там показывал, он отображает идентификатор, но не в функции getId (). Пожалуйста, помогите мне в этом.
Заранее спасибо.
Дханендран Раджагопал.
Рефакторите свою функцию getId (), как это!
public function getId(){ return $this->getState('id'); }
Эта проблема возникает, когда вы устанавливаете пользовательские состояния в своей Identity. Вы пытаетесь установить состояние, а затем получите атрибут!
Не уверен, что вы используете стандартный класс UserIdentity, но в стандарте один id
является частным атрибутом, а в Yii условные атрибуты _
перед ними, поэтому он будет выглядеть следующим образом:
public function getId() { return $this->_id; }
Поскольку это переменная private, вы не можете получить доступ к ней с помощью Yii::app()->user->_id
. Функция getId()
является волшебной функцией, когда вы запускаете Yii::app()->user->id
, она видит, что атрибут id
отсутствует, поэтому ищет функцию с именем getId()
и запускает ее, если она существует.
Если вы используете стандартный класс, вам необходимо изменить это, как вы указали в своем комментарии ниже:
$this->_id = $user->user_id //underscore added before id