【问题标题】:The DELETE method is not supported for this route. Supported methods: GET, HEAD, POST. in laravel此路由不支持 DELETE 方法。支持的方法:GET、HEAD、POST。在 laravel 中
【发布时间】:2019-10-21 16:07:11
【问题描述】:

我想做卖家可以删除产品

<form action="{{ route('product.destroy'}}" method="post">
    {{csrf_field()}}
    {{method_field('DELETE')}} 
    <button type="submit" class="btn btn-sm btn-danger">Delete</button>
 </form>

这是在 web.php 中

    Route::get('/index', 'ProductController@index');//seller view all product

Route::get('/create', 'ProductController@create'); //seller create new product
Route::post('','ProductController@store')->name('product.store'); //store in database

Route::get('/edit/{id}','ProductController@edit'); // seller edit post
Route::put('edit/{id}','ProductController@update')->name('product.update'); //seller update

Route::delete('/{id}','ProductController@destroy')->name('product.destroy');//seller delete product

这是在 ProductController 中

public function destroy($id)
    {
        $product= Product::find($id);
        Storage::delete($product->image);
        $product->delete();

        return back()->withInfo('Product has been deleted');

    }

请帮帮我

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    我认为你缺少 ID 这样做

    {{ route('product.destroy', $product->id)}}
    

    【讨论】:

      【解决方案2】:

      您可以尝试删除表单的 post 方法,因为您指定了另一个方法并取决于您使用的版本,您可以尝试 @method('DELETE')

      @method('DELETE')
      

      它更优雅

      【讨论】:

        【解决方案3】:

        在表单标签中传递路由中的ID,

        {{ route('product.destroy', $product->id)}}
        

        还有

        $product= Product::find($id);
            Storage::delete($product->image);
            $product->delete();
        

        检查它们是否是$product,然后删除它,否则会出错。

        【讨论】:

          猜你喜欢
          • 2019-10-11
          • 2021-09-04
          • 1970-01-01
          • 1970-01-01
          • 2020-06-05
          • 2020-04-19
          • 2021-09-09
          • 2022-10-01
          • 2021-05-08
          相关资源
          最近更新 更多