CRUD Laravel 5 如何链接销毁资源控制器?

2022-08-30 15:48:58

我有一个链接

<a class="trashButton" href="{{ URL::route('user.destroy',$members['id'][$i]) }}" style="cursor: pointer;"><i class="fa fa-trash-o"></i></a> 

这个链接应该指向用户控制器的销毁方法,这是我的路线Route::resource('/user', 'BackEnd\UsersController');

用户控制器是一个资源控制器。但此时此刻,它正在引导我使用显示方法,而不是指向销毁方法。


答案 1

您需要发送请求而不是请求。您无法使用链接执行此操作,因此必须使用 AJAX 请求或表单。DELETEGET

下面是泛型表单方法:

<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中方法欺骗的更多信息。


答案 2

这是因为您通过 GET 方法而不是 DELETE 方法请求资源。看:

DELETE  /photo/{photo}  destroy     photo.destroy
GET     /photo/{photo}  show    photo.show

两个路由具有相同的 URL,但标头谓词标识要调用哪个路由。查看 RESTful 表。例如,通过 ajax,您可以发送 DELETE 请求:

$.ajax({
    url: '/user/4',
    type: 'DELETE',  // user.destroy
    success: function(result) {
        // Do something with the result
    }
});

推荐