function beforeSave($insert) { if (parent::beforeSave($insert)) { $file = UploadedFile::getInstance($this, 'image'); if ($file && $file->error === UPLOAD_ERR_OK) { // Ищем, есть ли уже такой загруженный файл $file_model = Files::findOne(['hash' => md5_file($file->tempName)]); if ($file_model) { $file_model->repeats++; } else { $file_model = new Files(); $file_model->saveImageFile($file); $file_model->repeats = 1; } $file_model->save(); $this->file_id = $file_model->id; } else { $this->addError('image', 'Невозможно загрузить файл'); return false; } return true; } else { return false; } }
/** * Сохраняет загруженный файл и создает ссылки в бд. * @param $attribute * @return bool */ function saveUploadedImage($attribute) { $file = UploadedFile::getInstance($this, $attribute); if ($file->error === UPLOAD_ERR_OK) { $file_model = new Files(); $file_model->saveImageFile($file); $file_model->post_id = $this->post_id; $file_model->save(); $this->image_id = $file_model->id; return true; } return false; }
/** * Отвечает за загрузку изображений из формы редактирования записи * @return javascript string * @throws NotFoundHttpException if the model cannot be found */ function actionUpload() { //return ("<script>top.$('.mce-btn.mce-open').parent().find('.mce-textbox').val('/uploads/555efba5c24a7.jpg').closest('.mce-window').find('.mce-primary').click();</script>" ); $upload_model = new UploadForm(); $upload_model->load(yii::$app->request->post()); $file = UploadedFile::getInstance($upload_model, 'file'); if ($file->error === UPLOAD_ERR_OK) { try { $file_model = new Files(); $file_model->saveImageFile($file); $file_model->post_id = $upload_model->post_id; $file_model->save(); return "<script>top.\$('.mce-btn.mce-open').parent().find('.mce-textbox').val('/{$file_model->filename}').closest('.mce-window').find('.mce-primary').click();</script>"; } catch (\Exception $e) { } } return "<script>\$.jGrowl('ошибка, файл не получен');</script>"; }