如何使用Laravel发出删除请求

rur*_*641 8 html php web laravel

我没有使用资源控制器。

路线:

Route::delete('/deleteTag/{tag}','Controller2@deleteTag');
Run Code Online (Sandbox Code Playgroud)

控制器功能:

public function deleteTag(Tag $tag){
  $Tag = Tag::where('id', $tag->id)->get()->first();
  $Tag->delete();
  return redirect()->action('Controller2@main');
}
Run Code Online (Sandbox Code Playgroud)

电话:

<form method="delete" action="http://***/public/deleteTag/{{$tag->id}}"> 
    {!! Form::token() !!} 
    <button type="submit">delete</button>
</form>
Run Code Online (Sandbox Code Playgroud)

程序返回MethodNotAllowedHttpException。

谢谢。

The*_*pha 8

您可以尝试此操作(注意隐藏的_method输入):

<form method="post" action="http://***/public/deleteTag/{{$tag->id}}"> 
    {!! Form::token() !!}
    <input type="hidden" name="_method" value="DELETE">
    <button type="submit">delete</button>
</form>
Run Code Online (Sandbox Code Playgroud)

检查表格方法欺骗

更新:

在最新版本的Laravel中,可以以csrfmethod形式使用blade指令,例如:

<form method="post" action="..."> 
    @csrf
    @method('DELETE')
    <button type="submit">delete</button>
</form>
Run Code Online (Sandbox Code Playgroud)

  • laravel/blade 提供了 csrf 令牌和隐藏方法的简写: `@csrf` 和 `@method('DELETE')` [laravel 文档](https://laravel.com/docs/5.8/routing#form-method -欺骗) (2认同)