Почему не удалось обновить изображения в файле вида редактирования в Laravel 5.6?

У меня есть файл клика для редактирования в моем приложении laravel. в этой форме редактирования обновить данные до двух таблиц для транспортных средств и загрузок. У меня есть следующие коды в файлах редактирования кликов с лезвиями для загрузки таблицы,

@foreach( $vehicles-> uploads as $upload)

                    <img id="preview"
                         src="{{asset((isset($upload) && $upload->resized_name!='')?'images/'.$upload->resized_name:'images/noimage.png')}}"
                         height="200px" width="200px"/>
                    <input class="form-control" style="display:none" name="files[]" type="file" id="files" name="_token" value="{{ csrf_token() }}" enctype="multipart/form-data">
                    <br/>
                    <a href="javascript:changeProfile();">Add Image</a> |
                  <a class="button is-outlined" href="/myads/{{$upload->id}}/delete" onclick="return confirm('Are you sure to want to delete this record?')" >Delete</a></td>
<hr>
                   @endforeach
                    @endif 

контроллер обновления,

$photos = $request->file('files');

        if (!is_array($photos)) {
            $photos = [$photos];
        }

        if (!is_dir($this->photos_path)) {
            mkdir($this->photos_path, 0777);
        }

        for ($i = 0; $i < count($photos); $i++) {
            $photo = $photos[$i];
            $name = sha1(date('YmdHis') . str_random(30));
            $save_name = $name . '.' . $photo->getClientOriginalExtension();
            $resize_name = $name . str_random(2) . '.' . $photo->getClientOriginalExtension();

            Image::make($photo)
                ->resize(250, null, function ($constraints) {
                    $constraints->aspectRatio();
                })
                ->save($this->photos_path . '/' . $resize_name);

            $photo->move($this->photos_path, $save_name);

            $upload = Upload::find($id);
            $upload->filename = $save_name;
            $upload->resized_name = $resize_name;
            $upload->original_name = basename($photo->getClientOriginalName());
            $upload->vehicle_id = $vehicle->id;
            $upload->save();
        } 

и маршрут,

Route::post('myads/{id}', [
    'uses' => 'AppHttpControllersVehicleController@update',
])->name('vehicles.edit');

но когда я прикрепляю изображение и кнопки обновления, он не обновляет изображение в таблице uploads. как решить эту проблему?

Всего 2 ответа


Я думаю, что вы использовали неправильный метод в контроллере обновлений.

if (!is_array($photos)) {
    $photos = [$photos];
}

Попробуйте этот метод для преобразования строки в массив.

if (!is_array($photos)) {
    $photos = explode(' ', $photos);
}

Ваш код HTML неправильный.

  1. Не используйте style="display:none" в элементе input . Браузер будет игнорировать его, если они будут скрыты.

  2. Не объединяйте токен CSRF с входными файлами.

Попробуй это:

@foreach( $vehicles-> uploads as $upload)
  <img id="preview"  src="{{asset((isset($upload) && $upload->resized_name!='')?'images/'.$upload->resized_name:'images/noimage.png')}}" height="200px" width="200px"/>
  <input class="form-control" name="files[]" type="file" id="files" enctype="multipart/form-data">
  {{ csrf_field() }}
  <br/>
  <a href="javascript:changeProfile();">Add Image</a> |
  <a class="button is-outlined" href="/myads/{{$upload->id}}/delete" onclick="return confirm('Are you sure to want to delete this record?')" >Delete</a>
  <hr>
@endforeach

Есть идеи?

10000