Esempio n. 1
0
 public function createImage()
 {
     /* @var $modelImages \common\models\Images */
     /* @var $modelImagesOfObject \common\models\ImagesOfObject */
     $paramsCrop = Json::decode($this->imageData['imageCrop']);
     $model = new ImageForm();
     $model->image = UploadedFile::getInstance($model, 'image');
     //d($model->image);
     if ($model->validate()) {
         $smallFileName = time() . '_' . Yii::$app->user->id . '_small.' . $model->image->extension;
         // будущее имя миниатюры
         $fileName = time() . '_' . Yii::$app->user->id . '.' . $model->image->extension;
         // будущее имя
         $modelImages = new Images();
         $modelImages->path_small_image = $this->imageData['imagePath'] . $smallFileName;
         // изображение с путем
         $modelImages->path = $this->imageData['imagePath'] . $fileName;
         // изображение с путем
         $modelImages->size = $model->image->size;
         // размер изображения
         $modelImages->status = 0;
         // статус проверки
         $modelImages->temp = $this->imageData['images_temp'];
         // статус временного файла
         /*$transaction = Yii::$app->db->beginTransaction();
           try {*/
         if ($modelImages->save()) {
             $modelImagesOfObject = new ImagesOfObject();
             $modelImagesOfObject->image_id = $modelImages->id;
             $modelImagesOfObject->object_id = $this->imageData['object_id'];
             $modelImagesOfObject->label = $this->imageData['images_label'];
             if ($modelImagesOfObject->save()) {
                 FileHelper::createDirectory('images/' . $this->imageData['imagePath'], $mode = 509);
                 // создаем папку
                 if ($model->image->saveAs('images/' . $this->imageData['imagePath'] . $fileName)) {
                     // файл в папку
                     $image = Image::getImagine();
                     $newImage = $image->open('images/' . $this->imageData['imagePath'] . $fileName);
                     // получаем записаный файл
                     $newImage->rotate($paramsCrop['rotate']);
                     if ($newImage->crop(new Point($paramsCrop['x'], $paramsCrop['y']), new Box($paramsCrop['width'], $paramsCrop['height']))->save('images/' . $this->imageData['imagePath'] . $fileName)) {
                         $newImage = $image->open('images/' . $this->imageData['imagePath'] . $fileName);
                         // создание миниатюры
                         $newImage->thumbnail(new Box($this->imageData['imageSmallWidth'], $this->imageData['imageSmallHeight']))->save('images/' . $this->imageData['imagePath'] . $smallFileName);
                         //$transaction->commit();
                         //d(1);
                     }
                 }
                 \Yii::$app->session->set('image', $modelImages->id);
                 // если объект сохранился, записываем ID в сессию
                 \Yii::$app->session->remove('error');
             }
         } else {
             //d(2);
             \Yii::$app->session->set('error', 'Изображение не добавлено.');
             // если все в порядке, пишем в сессию путь к изображениею
             \Yii::$app->session->remove('image');
         }
         /*} catch (Exception $e) {
               $transaction->rollBack();
           }*/
         //dd([$model->errors, $modelImages->errors, $modelImagesOfObject->errors]);
     } else {
         //dd($model->errors);
         \Yii::$app->session->set('error', $model->errors['image']['0']);
         // если все в порядке, пишем в сессию путь к изображениею
         \Yii::$app->session->remove('image');
     }
 }