如何使用Laravel发出删除请求

时间:2017-07-03 14:42:24

标签: php html laravel web

我没有使用资源控制器。

路线:

Route::delete('/deleteTag/{tag}','Controller2@deleteTag');

控制器功能:

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

电话:

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

程序返回MethodNotAllowedHttpException。

谢谢。

2 个答案:

答案 0 :(得分:2)

您可以尝试这一点(注意隐藏的_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>

检查Form Method Spoofing

答案 1 :(得分:1)

最好将您的路线更改为此模式:

Route::resource('tags','TagController');

您应该注册一个到控制器的资源丰富的路由。该单个路由声明创建了多个路由来处理Tag资源上的各种RESTful操作。 请记住,由于HTML表单无法发出PUT,PATCH或DELETE请求,因此您需要添加一个隐藏的_method字段来欺骗这些HTTP动词。

<input type="hidden" name="_method" value="DELETE">

或将其添加到您的表单中

{{method_field('DELETE')}}