それが可能かどうか、またはこれを行うためのより簡単な方法があるかどうかを知りたいです。
多くのページでリレーショナルデータを使用したいのですが、今ではそれを使用するすべてのページに次のコードを配置しています。
<?php
if(!Yii::app()->user->isGuest){
$user = User::model()->findByPk(Yii::app()->user->id);
}
?>
したがって、ビューで次を使用できます。
$user->account->name
現在のユーザーに関連するアカウントの名前を表示するには
次のことができればいいのですが。
Yii::app->user->account->name
状態の設定は、使用したいアカウント名だけでなく、使用したいすべてのリレーショナルデータの状態を追加したくないため、私が探しているものではありません。
Solution
|
|
|
V
解決
私は両方の答えの良い点を組み合わせて、次のものを作成しました。
class WebUser extends CWebUser {
private $_user;
public function getAccount(){
if(!$this->isGuest && (!isset($this->_user) || Yii::app()->user->id != $this->_user->id)){
$this->_user = User::model()->findByPk(Yii::app()->user->id);
}
if(!empty($this->_user)){
return $this->_user->account;
} else {
return false;
}
}
}
だから今私は以下を使うことができます:
Yii::app()->user->account->name
上記のメソッドは、ユーザーがログインしていてデータが保存されていない場合、またはユーザーのIDが異なる場合にデータを取得します。
それをコンポーネントに配置し、Afnanが話している部分を構成に必ず追加してください(main.php)
私はそれが私を最も助けたのでアフナンの答えを受け入れます(私が知る必要があった部分)