невозможно обновить изображение при редактировании данных на laravel - PullRequest
0 голосов
/ 19 марта 2020

нет проблем, когда я создаю новые данные. все в порядке, включая загрузку изображения. Мое изображение вставлено в каталог public / image. Но когда я пытаюсь редактировать или обновлять, у меня возникает проблема. мое изображение, которое должно быть вставлено в public / изображение не работает на функцию обновления.

контроллер ниже

public function store(Request $request)
    {
        $request->validate([
            'name' => 'required',
            'sequence' => 'required',
            'image' => 'required|image|max:2048',
            'link' => 'required',
            'status' => 'required',
        ]);

        $image = $request->file('image');

        $new_name = $request->name .rand(). '.' . $image->getClientOriginalExtension();
        $image->move(public_path('images'), $new_name);

        $form_data = array(
            'name'             =>  $request->name,
            'sequence'         =>  $request->sequence,
            'image'            =>  $new_name,
            'link'             =>  $request->link,
            'status'           =>  $request->status,
        );

        Banner::create($form_data);

        return redirect()->route('banner.index');
    }

public function update(Request $request, Banner $banner)
        {
            $image_name = $request->hidden_image;
            $image = $request->file('image');
            if($image != ''){
                $request->validate([
                    'name' => 'required',
                    'sequence' => 'required',
                    'image' => 'image|max:2048',
                    'link' => 'required',
                    'status' => 'required',
                ]);
                $image_name = $request->name .rand(). '.' . $image->getClientOriginalExtension();
                $image->move(public_path('images'), $image_name);

            }

            else{
                $request->validate([
                    'name' => 'required',
                    'sequence' => 'required',
                    'link' => 'required',
                    'status' => 'required',
                ]);
            }

            $form_data = array(
                'name'             =>  $request->name,
                'sequence'         =>  $request->sequence,
                'image'            =>  $image_name,
                'link'             =>  $request->link,
                'status'           =>  $request->status,
            );

            Banner::whereId($banner)->update($form_data);
            return redirect()->route('banner.index');

        }

И мой код просмотра ниже

<form action="{{ route('banner.update',$banner->id) }}" method="POST">
                            @csrf
                            @method('PUT')

                            <div class="row" style="margin-top: 10px">
                                <div class="col-xs-12 col-sm-12 col-md-12">
                                    <div class="form-group">
                                        <strong>Name:</strong>
                                        <input type="text" name="name" value="{{ $banner->name }}" class="form-control" placeholder="Name">
                                    </div>
                                </div>
                                <div class="col-xs-12 col-sm-12 col-md-12">
                                    <div class="form-group">
                                        <strong>Sequence</strong>
                                        <input type="number" name="sequence" value="{{ $banner->sequence }}" class="form-control" placeholder="Sequence">
                                    </div>
                                </div>
                                <div class="col-xs-12 col-sm-12 col-md-12">
                                <div class="form-group">
                                <strong>Image</strong>
                                  <div class="col-md-8">
                                  <img src="{{ URL::to('/') }}/images/{{ $banner->image }}" class="img-thumbnail" width="200" />
                                  </div>
                                  <div class="col-md-8">
                                    <input type="file" name="image" /> 
                                    <input type="text" name="hidden_image" value="{{ $banner->image }}" />
                                   </div> 
                                  </div>
                                </div>
                                <div class="col-xs-12 col-sm-12 col-md-12">
                                    <div class="form-group">
                                        <strong>Link</strong>
                                        <input type="text" name="link" value="{{ $banner->link }}" class="form-control" placeholder="Link">
                                    </div>
                                </div>
                                <div class="col-xs-12 col-sm-12 col-md-12">
                                    <div class="form-group">
                                        <strong>Status</strong>
                                        <input type="text" name="status" value="{{ $banner->status }}" class="form-control" placeholder="Status">
                                    </div>
                                </div>
                                <div class="col-xs-12 col-sm-12 col-md-12 text-center">
                                <button type="submit" class="btn btn-primary">Submit</button>
                                </div>
                            </div>

                        </form>

1 Ответ

1 голос
/ 19 марта 2020

в вашей форме отсутствует атрибут enctype, поэтому файл не передается с формой. добавьте этот атрибут, и все будет работать.

<form action="{{ route('banner.update',$banner->id) }}" method="POST" enctype="multipart/form-data">
...