Laravel 5 Laravel delete方法不使用delete谓词

Laravel 5 Laravel delete方法不使用delete谓词,laravel-5,Laravel 5,在我的路由文件中,我有 Route::delete('events/{events}', ['as' => 'events_delete', 'uses' => 'Admin\EventsController@destroy'] ); 在我的视图文件中,我有 <a href="{!! route('events_delete', ['id' => $event->id ]) !!}" type="button" class="btn btn-sm btn-da

在我的路由文件中,我有

  Route::delete('events/{events}', ['as' => 'events_delete', 'uses' => 'Admin\EventsController@destroy'] );
在我的视图文件中,我有

<a href="{!! route('events_delete', ['id' => $event->id ]) !!}" type="button" class="btn btn-sm btn-danger"><em class="fa fa-trash"></em></a>
它确实有效。但是,我不喜欢使用GET动词而不是delete动词来删除项目。这感觉像是个骗局

如何更改表单代码以确保它发送删除谓词

解决方案1(自下而上):使用路由文件中的删除谓词

<form action="{!! route('events_delete', ['id' => $event->id ]) !!}" method="POST">
   {{ method_field('DELETE') }}
   {{ csrf_field() }}
   <button class="btn btn-danger btn-sm" type="submit"><em class="fa fa-trash"></em></button>
</form>
<a href="{!! route('events_delete', ['id' => $event->id ]) !!}" type="button" class="btn btn-sm btn-danger"><em class="fa fa-trash"></em></a>

{{method_field('DELETE')}
{{csrf_field()}}
解决方案2:在路由文件中使用GET谓词

<form action="{!! route('events_delete', ['id' => $event->id ]) !!}" method="POST">
   {{ method_field('DELETE') }}
   {{ csrf_field() }}
   <button class="btn btn-danger btn-sm" type="submit"><em class="fa fa-trash"></em></button>
</form>
<a href="{!! route('events_delete', ['id' => $event->id ]) !!}" type="button" class="btn btn-sm btn-danger"><em class="fa fa-trash"></em></a>

您必须发出一个删除请求才能以这种方式使用路由,这可以通过表单来完成,否则您将通过锚点发出get请求

如果您还没有软件包,请从composer安装它以使用forms facade。然后您可以这样请求:

    {!! Form::open(['method' => 'DELETE', 'route' => $yourRoute]) !!}
    {!! Form::submit('Delete') !!}
    {!! Form::close() !!}
编辑:

没有正面的形式:

<form action="{{ $yourRoute }}" method="POST">
    {{ method_field('DELETE') }}
    {{ csrf_field() }}
    <button class="btn btn-danger btn-sm" type="submit"><em class="fa fa-trash"></em></button>
</form>

{{method_field('DELETE')}
{{csrf_field()}}
您必须发出一个删除请求才能以这种方式使用路由,这可以通过表单来完成,否则您将通过锚点发出get请求

如果您还没有软件包,请从composer安装它以使用forms facade。然后您可以这样请求:

    {!! Form::open(['method' => 'DELETE', 'route' => $yourRoute]) !!}
    {!! Form::submit('Delete') !!}
    {!! Form::close() !!}
编辑:

没有正面的形式:

<form action="{{ $yourRoute }}" method="POST">
    {{ method_field('DELETE') }}
    {{ csrf_field() }}
    <button class="btn btn-danger btn-sm" type="submit"><em class="fa fa-trash"></em></button>
</form>

{{method_field('DELETE')}
{{csrf_field()}}

将生成GET请求,因此它与Route::delete不匹配

HTML表单不支持放置、修补或删除操作。因此,在定义从HTML表单调用的PUT、PATCH或DELETE路由时,需要向表单中添加隐藏的_方法字段

参考:

要调用删除路由,必须使用jquery实现

<a eventid="{{$event->id}}" href="#" type="button" class="btn btn-sm btn-danger"><em class="fa fa-trash"></em></a>

$(document).on("click",".anchorclass",function(e){
e.preventDefault();
if(!confirm("Are you sure?")) return;

 $.ajax({
            type: "DELETE",
            url: 'events/'+$(this).attr("eventid"),
            success: function(data) {
                //Process results
            }
        });

}); 

$(文档).on(单击),.anchorclass,函数(e){
e、 预防默认值();
如果(!确认(“您确定吗?”)返回;
$.ajax({
键入:“删除”,
url:'events/'+$(this.attr(“eventid”),
成功:功能(数据){
//过程结果
}
});
}); 

将生成GET请求,因此它与Route::delete不匹配

HTML表单不支持放置、修补或删除操作。因此,在定义从HTML表单调用的PUT、PATCH或DELETE路由时,需要向表单中添加隐藏的_方法字段

参考:

要调用删除路由,必须使用jquery实现

<a eventid="{{$event->id}}" href="#" type="button" class="btn btn-sm btn-danger"><em class="fa fa-trash"></em></a>

$(document).on("click",".anchorclass",function(e){
e.preventDefault();
if(!confirm("Are you sure?")) return;

 $.ajax({
            type: "DELETE",
            url: 'events/'+$(this).attr("eventid"),
            success: function(data) {
                //Process results
            }
        });

}); 

$(文档).on(单击),.anchorclass,函数(e){
e、 预防默认值();
如果(!确认(“您确定吗?”)返回;
$.ajax({
键入:“删除”,
url:'events/'+$(this.attr(“eventid”),
成功:功能(数据){
//过程结果
}
});
}); 

除了使用forms facade之外,没有其他方法了吗?我没有用过它,因为肯定是有原因的,Laravel决定不再把它作为核心Laravel系统的一部分。你的建议很有效。我已经更新了原来的帖子,加入了我认为有效的两个解决方案。不过,一个简单的问题是,你的建议(没有表单facade)会导致垃圾(删除)图标被放在单独的一行,而不是其他图标旁边。你知道我如何确保图标在其他图标旁边吗?@wiwa1978如果你有引导CSS,尝试将类表单内联添加到表单标签:
。没有其他方法使用表单外观吗?我没有用过它,因为肯定是有原因的,Laravel决定不再把它作为核心Laravel系统的一部分。你的建议很有效。我已经更新了原来的帖子,加入了我认为有效的两个解决方案。不过,一个简单的问题是,你的建议(没有表单facade)会导致垃圾(删除)图标被放在单独的一行,而不是其他图标旁边。你知道我如何确保图标在其他图标旁边吗?@wiwa1978如果你有引导CSS,尝试将类表单内联添加到表单标签: