此路由不支持DELETE方法。支持的方法:GET,HEAD,POST。在拉拉韦尔

时间:2019-10-21 16:07:11

标签: php laravel

我想让卖家删除产品

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

    }

请帮助我

3 个答案:

答案 0 :(得分:2)

我认为您缺少ID,就像

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

答案 1 :(得分:0)

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

@method('DELETE')

它更加优雅

答案 2 :(得分:0)

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

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

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

检查它们是否为$ product,然后将其删除,否则会出现错误。