Ответ 1
у вас должна быть функция getId в идентификаторе пользователя
Я пытаюсь получить идентификатор пользователя, но пока не повезло...
echo Yii::app()->user->id;
и
echo Yii::app()->user->getId();
вернуть имя пользователя, которое является странным. Любая идея, что не так?
у вас должна быть функция getId в идентификаторе пользователя
Yii:: app() → по умолчанию возвращает компонент CWebUser.
Если вы хотите получить дополнительную информацию о пользователе, вам необходимо расширить этот компонент.
Создайте файл WebUser.php
в папке components
. (мой пример ниже)
class WebUser extends CWebUser {
/**
* Gets the FullName of user
*
* @return string
*/
public function getFullName()
{
return $this->_model->first_name . ' ' .$this->_model->last_name;
}
}
В разделе поиска файла конфигурации
'components'=>array(
'user'=>array(
'class'=>'WebUser'
)
)
если этого раздела нет, просто создайте его. И измените 'class' = > на WebUser '.
Или вы можете использовать setState
:
class UserIdentity extends CUserIdentity
{
private $_id;
public function authenticate()
{
$record=Users::model()->findByAttributes(array('mail'=>$this->username));
if($record===null)
$this->errorCode=self::ERROR_USERNAME_INVALID;
else if($record->password!==md5($this->password."325"))
$this->errorCode=self::ERROR_PASSWORD_INVALID;
else
{
$this->_id = $record->id;
$this->setState('role', $record->active);
$this->setState('mail', $record->mail);
$this->setState('name', $record->name);
$this->setState('surname', $record->surname);
$this->setState('mobile', $record->mobile);
$this->setState('adress', $record->adress);
$record->count_login += 1;
$record->update();
$this->errorCode=self::ERROR_NONE;
}
return !$this->errorCode;
}
public function getId()
{
return $this->_id;
}
}
<?php echo Yii::app()->user->name." ".Yii::app()->user->surname; ?>
Используйте функцию getid в Component/Useridentity, чтобы получить идентификатор пользователя и имя и т.д.
class UserIdentity extends CUserIdentity
{
private $_id;
public function authenticate()
{
$users=Users::model()->find("email_id='$this->username'");
$this->_id=$users->user_id;
}
public function getId(){
return $this->_id;
}
}
если вы хотите отобразить его на представлениях, которые это должно сделать:
echo Yii::$app->user->id;