Метод POST не поддерживается для этого маршрута. Поддерживаемые методы: GET, HEAD. в laravel - PullRequest
0 голосов
/ 24 февраля 2020

Я хочу выбрать некоторые файлы для пакета, но у меня есть ошибка!

SingleproductController:

 public  function syncFiles(Request $request , $id){
        $files = product_file::all();
      $product_item = Singleproduct::find($id);
      $product_files = $product_item->file()->get()->pluck('id')->toArray();
        return view('admin.SingleProduct.productSync'  , compact('files' , 'product_files'));
   }
public  function updatesyncFiles(Request $request , $id){
       $product_item = Singleproduct::find($id);
        $files = $request->input('files');
        if ($product_item && is_array($files)){
            $product_item->file()->sync($files);
        }
}

blade-сервер:

  @if( $files && count($files) > 0)
        <form action="{{ route('product.updatesync_files')}}" method="post">
            {{ csrf_field()  }}
            <h3 style="color: black; ">فایل مربوطه:</h3>
            <section class="panel">
                <table class="table table-striped table-advance table-hover">
            <ul>
                @foreach($files as $file)
                    <li>
                        <input type="checkbox" name="files[]" value="{{ $file->file_id  }}" {{ isset($id) && in_array($file->id,$id) ? 'checked':''  }}>
                        {{ $file->file_name }}
                    </li>
                @endforeach
            </ul>
            <div class="form-group">
                <input type="submit" class="btn btn-danger" name="submit_product_files" value="ذخیره اطلاعات">
            </div>
                </table>
            </section>
        </form>
    @endif

route :

  Route::get('/product/sync_files/{id}', 'SingleproductController@syncFiles')->name('product.sync_files');

    Route::post('/product/updatesync_files/{id}', 'SingleproductController@updateSyncFiles')->name('product.updatesync_files');

ошибка: «Метод POST не поддерживается для этого маршрута. Поддерживаемые методы: GET, HEAD.»

Ответы [ 2 ]

0 голосов
/ 24 февраля 2020

если вы загружаете файлы в форму, вам не хватает атрибута enctype = "multipart / form-data", это важно для загрузки файлов.

Здесь ваша форма будет

<form action="{{ route('product.updatesync_files')}}" method="post" enctype="multipart/form-data">

для получения дополнительной информации прочитайте это.

https://www.w3schools.com/tags/att_form_enctype.asp

0 голосов
/ 24 февраля 2020

Если вы не указали действие в своей форме (или указанное действие пусто), либо не перенаправляет на тот же URL-адрес, где находится форма, в этом случае решением будет указать правильное действие для вашей формы.

Как я может видеть, что у вас есть следующий маршрут с именем product.updatesync_files:

Route::post('/product/updatesync_files/{id}', 'SingleproductController@updateSyncFiles')->name('product.updatesync_files');

Вы можете добавить этот маршрут в форму:

<form action="{{ route('product.updatesync_files') }}" method="post">

Но у вас есть обязательный параметр в маршруте {id}. Я не могу понять, что это за идентификатор на самом деле. Если вы знаете это, вы можете добавить это к своей форме

<form action="{{ route('product.updatesync_files', ['id' => $id]) }}" method="post">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...