我有一个链接
<a class="trashButton" href="{{ URL::route('user.destroy',$members['id'][$i]) }}" style="cursor: pointer;"><i class="fa fa-trash-o"></i></a>
这个链接应该直接指向用户控制器的销毁方法,这是我的路由Route::资源('/user','Backend\UsersController');
UserController是一个资源控制器。但此时此刻它在引导我走向表演法而不是走向毁灭法
您需要发送DELETE
请求,而不是GET
请求。您不能使用链接来实现这一点,因此必须使用AJAX请求或表单。
下面是通用表单方法:
<form action="{{ URL::route('user.destroy', $members['id'][$i]) }}" method="POST">
<input type="hidden" name="_method" value="DELETE">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<button>Delete User</button>
</form>
如果您正在使用Laravel 5.1或更高版本,那么您可以使用Laravel的内置助手来缩短代码:
<form action="{{ route('user.destroy', $members['id'][$i]) }}" method="POST">
{{ method_field('DELETE') }}
{{ csrf_field() }}
<button>Delete User</button>
</form>
如果您使用的是Laravel 5.6或更高版本,则可以使用新的Blade指令进一步缩短代码:
<form action="{{ route('user.destroy', $members['id'][$i]) }}" method="POST">
@method('DELETE')
@csrf
<button>Delete User</button>
</form>
您可以在这里阅读有关Laravel中的方法欺骗的更多信息。
这是因为您是通过GET方法而不是DELETE方法请求资源的。看:
DELETE /photo/{photo} destroy photo.destroy
GET /photo/{photo} show photo.show
两个路由都有相同的URL,但标头谓词标识要调用的URL。看那张安静的桌子。例如,通过ajax,您可以发送删除请求:
$.ajax({
url: '/user/4',
type: 'DELETE', // user.destroy
success: function(result) {
// Do something with the result
}
});
我使用此模板的“资源/视图/utils/delete”。刀身php'
<form action="{{ $url or Request::url() }}" method="POST">
{{ method_field('DELETE') }}
{{ csrf_field() }}
<button type='submit' class="{{ $class or 'btn btn-danger' }}" value="{{ $value or 'delete' }}">{!! $text or 'delete' !!}</button>
</form>
称为:
@include('utils.delete',array( 'url' => URL::route('user.destroy',$id),'text' => '<span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span> delete me'))