@prozrost

Как удалить картинку с помощью ajax запроса?

Есть поле для загрузки файлов во вьюхе(множественная загрузка)
<?= $form->field($images, 'imagesFiles[]')->fileInput(['multiple' => true, 'accept' => 'image/*','id'=>'gallery-photo-add'])->label(false) ?>

Есть так же метод в контроллере который все обрабатывает,получая изображения через
$images->imagesFiles = UploadedFile::getInstances($images, 'imagesFiles');

Теперь хочу чтоб у меня было типа превью этих еще не загруженных картинок во вьюхе,но самое главное,чтоб их можно было удалить.Может кто делал что нибудь подобное.
  • Вопрос задан
  • 634 просмотра
Пригласить эксперта
Ответы на вопрос 2
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
чтоб их можно было удалить
их кого? Файлы или превью, так как обычно превью создает js еще до загрузки на сервер.
Для yii2 есть виджеты с превью, из адекватных:
https://github.com/2amigos/yii2-file-upload-widget
demos.krajee.com/widget-details/fileinput

Для удаления шлете ajax или обычный запрос, передавая данные достаточные для идентификации. На сервере удаляете, в контролере или в моделе.
unlink('путь к картинке');
если для модели есть атрибут, допустим "image_name" в котором хранится название фото, то экшен выглядит как-то так:
public function actionDeleteMyImage($id){
  if($model = MyModel::findOne($id)){
    $path = '/путь/к/папке/с/картинками/от/корня/сервера/'.$model->image_name;
    if(file_exists($path)){
      unlink($path);
      return true;
    }
  }
  return false;
}
Ответ написан
@k0nsu1
Для превью еще не загруженных картинок Вам понадобится FileReader в javascript, либо сперва отправлять файл на сервер, там его обрабатывать и отдавать ссылку на превью.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы