@iva-86-w1

Как правильно загружать изображение?

Здравствуйте! Делаю по докам загрузку изображения www.yiiframework.com/doc-2.0/guide-input-file-uplo...
Есть стандартный контроллер в котором:
public function actionCreate()
    {
        $model = new Post();

        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            return $this->redirect(['view', 'id' => $model->post_id]);
        } 
		else {

$model->logo = UploadedFile::getInstance($model, 'logo');

            if ($model->logo && $model->validate()) {                
                $model->logo->saveAs('uploads/' . $model->logo->baseName . '.' . $model->logo->extension);
            }

            return $this->render('create', [
                'model' => $model,
            ]);
       }
    }


В отображении:

<?= $form->field($model, 'logo')->fileInput() ?>

Модель:

public function rules()
    {
        return [
            [['logo'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg'],

        ];
    }


Файл загружается. Но не производится перенос на созданный материал и сами данные поста не записываются, хотя если убрать загрузку файла то все нормально. Что здесь неправильно?
  • Вопрос задан
  • 193 просмотра
Решения вопроса 1
DmitryVoronkov
@DmitryVoronkov
Python Developer
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
            $value = UploadedFile::getInstance($model, 'logo');
            if ($value) {
                $name = Yii::$app->security->generateRandomString() . ".{$value->extension}";
                $model->logo = $name;
                if ($model->save()) {
                    $value->saveAs(Yii::getAlias('@webroot') . '/uploads/' . $name);
                    return $this->redirect('/admin/');
                }
            }
        }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы