ユーザーIDを取得しようとしていますが、今のところ運がありません...
echo Yii::app()->user->id;
そして
echo Yii::app()->user->getId();
変なユーザー名を返します。何が悪いのか分かりますか?
あなたは、ユーザーのアイデンティティでのgetId機能を持っている必要があります
Yii :: app()-> userは、デフォルトでコンポーネント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'
)
)
このセクションがない場合は、作成してください。そして、「クラス」=>を「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; ?>
コンポーネント/ユーザーIDのgetid関数を使用して、ユーザーIDや名前などを取得します。
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;