首页 > 解决方案 > 此路由不支持 POST 方法。支持的方法:GET、HEAD。在 laravel 中

问题描述

我想为一个包选择一些文件,但我有一个错误!

单品控制器:

 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);
         }
}

刀:

  @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::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。”

标签: laravel

解决方案


如果您没有在表单上指定操作(或指定的操作为空)或重定向到表单所在的相同 url,在这种情况下,解决方案将是为您的表单指定正确的操作。

如我所见,您有以下路线名称product.updatesync_files

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

您可以将此路线添加到您的表单中:

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

但是您在 route 中有必需的参数{id}。我无法弄清楚这个 id 实际上是什么。如果您知道,可以将其添加到您的表单中

<form action="{{ route('product.updatesync_files', ['id' => $id]) }}" method="post">

推荐阅读