UPDATE2:
Я создал новый компонент WebUser.php в / protected / components следующим образом:
<?php class WebUser extends CWebUser{ private $_model; function getId(){ $user = $this->loadUser(Yii::app()->user->id); return $user->id; } protected function loadUser($id=null){ if($this->_model===null) { if($id!==null) { $this->_model=Users::model()->findByPk($id); } return $this->_model; } } }
Я также зарегистрировал компонент в main.php. После загрузки изменений мое приложение все еще утверждает, что WebUser.getId не определен.
ОБНОВИТЬ:
После внесения изменений, а затем откат их, я получаю новую ошибку:
Property "CWebUser.getId" is not defined.
Ниже приведен фрагмент кода:
$user = Users::model()->find('username=?', array( Yii::app()->user->getId));
Как и где следует getId установить ссылку на поле $ id в модели Users?
Мой UserController выбрасывает следующую ошибку SQL:
CDbCommand failed to execute the SQL statement: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined. The SQL statement executed was: SELECT * FROM `users` `t` WHERE username=? LIMIT 1
Ошибка вызвана этим фрагментом контроллера:
public function actionProfile($id=''){ $user = Users::model()->find('username=?', array(Yii::app()->user->getId())); if(!$id){ $id = $user->id; if(!$id) $this->redirect('login'); } if( getUserSess('user_type') == 'Sitter') { $this->render('profile_detail', array('user_id' => $id )); } else { $this->render('petowner_profile_detail',array( 'model'=>$this->loadModel($id), )); } }
Профиль profile_detail выглядит следующим образом:
<?php if(!$user_id){ $user_id = getUserSess('id'); } $this->widget('ext.UserProfile.BasicProfile',array('user_id'=>$user_id)); ?> <?php //$this->widget('ext.UserProfile.UserServices',array('user_id'=>$user_id)); ?>
Представление petowner_profile_detail выглядит следующим образом:
<?php $this->widget('zii.widgets.CDetailView', array( 'data'=>$model, 'attributes'=>array( 'username', 'email', 'phone', 'fname', 'lname', 'address1', 'address2', 'city', 'state', 'zip', 'is_year_old', 'user_type', // 'register_date', // 'varified_date', // 'is_premium', // 'last_login', ), )); ?>
Как исправить ошибку SQL?
ОБНОВИТЬ:
$ user = Пользователи :: model () -> find ('username =: id', array (": id" => Yii :: app () -> user-> id));
UPDATE2:
Yii :: app () -> user-> getId () или Yii :: app () -> user-> id not Yii :: app () -> user-> getId