@noName7

В админке не работают кнопки редактировать и добавить?

Из базы добавляются фото, при нажатие на кнопку "редактировать" всплывает окно "успешно обновлено", но ничего не меняется.
Контроллер:
public function edit($id)
    {
        //
        $gallery = gallery::find($id);
        // $gallery=gallery::orderBy('created_at','desc')->get();
        return view('admin.table.gallery.edit',[
            'gallery'=>$gallery
        ]);
    }
public function update(Request $request, gallery $gallery)
    {
        //
        $gallery->photo = "img/galery/" . $_FILES['imgRed']['name']; //файл
        if (!empty($_FILES)) {
        //перемещение
        move_uploaded_file(
        $_FILES['imgRed'] ['tmp_name'],
        'img/galery/' . $_FILES['imgRed']['name']
        );
    }
        // // если не меняем картнку, то оставлять имя
        if ($_FILES['imgRed']['name']=="") {
        $gallery->photo = $request->imgHidden;
        }
        $gallery->save();
        return redirect()->back()->withSuccess('Статья была успешно обновлена!');
    }

index:
@foreach($gallery as $gal)
     <tr>  
         <td>{{$gal['id']}}</td>  
         <td><img src="/{{$gal['photo']}}" alt="картинка" srcset"" style="width:30%;"></td>
                            
          <td class="project-actions text-right">
          <a class="btn btn-info btn-sm" href="{{route('gallery.edit',$gal['id'])}}">
            <i class="fas fa-pencil-alt"></i>
                                Редактировать
                              </a>
           <form action="" method="POST"    style="display: inline-block">
             @csrf
             @method('DELETE')
                  <button type="submit" class="btn btn-danger btn-sm delete-btn">
                   <i class="fas fa-trash"></i>
                        Удалить
                   </button>
               </form>
               </td>
               </tr>
   @endforeach

Также кнопка "добавить" тоже не работает, ошибка: Undefined index: img
<form action="{{route('gallery.store')}}" method="POST">
                    @method('POST')
                   @csrf
                <div class="form-group">
                    <label for="img">Изображение статьи</label>
                    <input type="file" name="img" class="form-control">
                </div>
                <!-- /.card-body -->
                <div class="card-footer">
                  <button type="submit" class="btn btn-primary">Добавить</button>
                </div>
              </form>

public function create()
    {
        return view('admin.table.gallery.create');
    }
public function store(Request $request)
    {
        //добавляем к имени файла адрес папки для БД
        $gallery->photo = "img/galery/" . $_FILES['img']['name'];
        ////переносим файл из временной папки сервера в папку проекта
        if (!empty($_FILES)) {
        move_uploaded_file(
            $_FILES['img']['tmp_name'],
            'img/galery/' . $_FILES['img']['name']
        );
    }
        $post->save();
        return Redirect()->back()->withSuccess("Фото было успешно добавлено!");
    }

В чём ошибка? Таблицы с текстом работают, а вот с картинками не получается.
  • Вопрос задан
  • 161 просмотр
Решения вопроса 1
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
1. для заливки файлов у формы должно быть указан параметр enctype="multipart/form-data"
<form action="{{route('gallery.store')}}" method="post" enctype="multipart/form-data">


2. почему-то в одном коде идёт "img" в другом "imgRed"

3. изучите документацию о том как правильно и безопасно работать с заливкой файлов в laravel, чтобы не тащить в код $_FILES
https://laravel.com/docs/9.x/filesystem#file-uploads
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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