public function actionCreate() { $this->layout = '/adminka'; $model = new Book(); if ($model->load(Yii::$app->request->post())) { FileHelper::createDirectory(Yii::getAlias('@frontend') . '/web/upload/book-big'); FileHelper::createDirectory(Yii::getAlias('@frontend') . '/web/upload/book-thumbs'); $name = date("dmYHis", time()); if (Yii::$app->request->isPost) { $model->image = UploadedFile::getInstance($model, 'image'); $model->file = UploadedFile::getInstance($model, 'file'); if ($model->image) { $model->image->saveAs('upload/book-big/' . $name . '.' . $model->image->extension); $full_name = $name . '.' . $model->image->extension; $model->image = $full_name; Image::thumbnail(Yii::getAlias('@frontend') . '/web/upload/book-big/' . $full_name, 1200, 500)->save(Yii::getAlias(Yii::getAlias('@frontend') . '/web/upload/book-thumbs/' . $full_name), ['quality' => 80]); } if ($model->file) { $model->file->saveAs('book/' . $name . '.' . $model->file->extension); $full_name_zip = $name . '.' . $model->file->extension; $model->file = $full_name_zip; $model->eng_name = $full_name_zip; } //vd($model); $model->download = 0; $model->save(); Yii::$app->session->setFlash('success', 'Данные удачно сохранены'); } else { Yii::$app->session->setFlash('error', 'Данные не удачно сохранены'); } return $this->redirect(['view', 'id' => $model->id]); } else { return $this->render('create', ['model' => $model]); } }
/** * Creates a new Book model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate() { $model = new Book(); $model->date = strtotime(date('d.m.Y')); if ($model->load(Yii::$app->request->post()) && $model->save()) { return $this->redirect(['index', 'id' => $model->id]); } else { return $this->render('create', ['model' => $model]); } }
/** * Creates a new Book model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate() { $model = new Book(); if ($model->load(Yii::$app->request->post())) { $model->preview_file = UploadedFile::getInstance($model, 'preview_file'); if ($model->save()) { return $this->redirect(Url::previous()); } } return $this->render('create', ['model' => $model]); }
/** * Добавление книги. * * @return mixed * @throws \Exception * @throws \yii\base\Exception */ public function actionCreate() { $model = new Book(); if ($model->load(Yii::$app->request->post()) && $model->save()) { if (null !== ($image = UploadedFile::getInstance($model, 'preview'))) { $model->preview = $image; if (!$model->validate(['preview'])) { Yii::$app->getSession()->setFlash('error', Html::errorSummary($model, ['header' => 'Пожалуйста, исправьте следующие ошибки:', 'encode' => false])); return $this->redirect(['book/update', 'id' => $model->id]); } // работаем с новым загруженным изображением $uploadsDir = realpath(Yii::$app->params['booksUploadsDir']); $uploadsTmpDir = realpath(Yii::$app->params['frontendUploadsTmpDir']); // сохраняем изображение во временную директорию $tmpFilename = $uploadsTmpDir . DIRECTORY_SEPARATOR . 'book_preview_' . uniqid() . '.' . $image->getExtension(); if (false === $image->saveAs($tmpFilename)) { throw new Exception('Невозможно сохранить загруженное изображение для книги в файл: ' . $tmpFilename); } else { // создаем вложенные директории $path = Util::createNestedFolders($uploadsDir, $model->id); $filename = $path . DIRECTORY_SEPARATOR . dechex($model->id) . '.' . $image->getExtension(); $previewFilename = $path . DIRECTORY_SEPARATOR . dechex($model->id) . '_thumb.' . $image->getExtension(); $imagine = Image::getImagine(); /** @var $i \Imagine\Gd\Image */ $i = $imagine->open($tmpFilename); // если размеры изображения превышают лимиты, оно ресайзится if ($i->getSize()->getWidth() > Yii::$app->params['maxImageWidth'] || $i->getSize()->getHeight() > Yii::$app->params['maxImageHeight']) { $i->thumbnail(new Box(Yii::$app->params['maxImageWidth'], Yii::$app->params['maxImageHeight']), ImageInterface::THUMBNAIL_INSET)->save($filename, ['quality' => 100]); } else { $i->save($filename); } // создаем превьюшку из исходника $i = $imagine->open($tmpFilename); if ($i->getSize()->getWidth() > Yii::$app->params['thumbnailDefaultWidth'] || $i->getSize()->getHeight() > Yii::$app->params['thumbnailDefaultHeight']) { $i->thumbnail(new Box(Yii::$app->params['thumbnailDefaultWidth'], Yii::$app->params['thumbnailDefaultHeight']), ImageInterface::THUMBNAIL_INSET)->save($previewFilename, ['quality' => 100]); } // удаляем временный файл unlink($tmpFilename); $filename = str_replace('\\', '/', $filename); $filename = preg_replace('=^(.*?)(/uploads/books/.*)$=iu', '\\2', $filename); $model->preview = $filename; } $model->update(false, ['preview']); } Yii::$app->session->setFlash('success', 'Новая книга успешно добавлена.'); return $this->redirect(['index']); } else { return $this->render('create', ['model' => $model]); } }