Проблема в следующем:
1) Когда прикрепляю изображение, в базу пишется только название изображения, без пути, хотя его я указываю.
2) UploadedFile в контроллере почему-то не работает, изображения не загружаются. добавил конструкцию:
if(!UploadedFile::getInstance($model,'avatar')){echo 'error!';}
И соответственно получил ошибку.
Подскажите в чём я ошибся при написании. Код прикрепляю:
Функция в контроллере:
use yii\web\UploadedFile;
public function actionUpdateuserinfo($id)
{
$model = User::find()->where('id = :id',[':id' => $id])->one();
if( \Yii::$app->getRequest()->isPost ){
if( $model->load( \Yii::$app->request->post() ) && $model->validate() ){
$model->avatar = UploadedFile::getInstance($model,'avatar');
if($model->avatar){
$dir = 'images/user_avatars/';
$path = $model->avatar->baseName.'.'.$model->avatar->extention;
$model->avatar->saveAs($dir.$path);
$model->attachImage($path);
}
$model->save();
$user = User::find(
['username','email','first_name','surname','date_of_birth','avatar']
)->where(['id' => $model->id])->all();
return $this->render('index', [
'user' => $user,
'model' => $model
]);
}
}
else{
return $this->render('updateuserinfo', [
'model' => $model
]);
}
}
Представление (форма)
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
use yii\widgets\Pjax;
?>
<?php Pjax::begin(['id' => 'w0']); ?>
<?php
$form = ActiveForm::begin([
'id' => 'about-form',
'method' => 'post',
'options' => [
'onctype' => 'multipart/form-data',
],
]); ?>
<?= $form->field($model, 'avatar')->fileInput() ?>
<?= $form->field($model, 'first_name')->textInput(['placeholder' => 'Ваше имя', 'value' => $model->first_name]) ?>
<?= $form->field($model, 'email')->textInput(['placeholder' => 'Ваш Email', 'value' => $model->email]) ?>
<?= $form->field($model, 'surname')->textInput(['placeholder' => 'Ваша фамилия', 'value' => $model->surname]) ?>
<?= $form->field($model, 'date_of_birth') ?>
<div class="form-group">
<?= Html::submitButton('Отправить', ['class' => 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>
<?php Pjax::end(); ?>
В модели User имеется следующее:
use yii\web\UploadedFile;
public function rules()
{
return [
['status', 'default', 'value' => self::STATUS_ACTIVE],
['status', 'in', 'range' => [self::STATUS_ACTIVE, self::STATUS_DELETED]],
[['email','first_name','surname','date_of_birth','avatar'], 'required'],
['email', 'email'],
['avatar','image','extensions'=> ['jpg','jpeg','png']],
];
}