没有 id 的 Laravel 资源路由销毁(DELETE)
Posted
技术标签:
【中文标题】没有 id 的 Laravel 资源路由销毁(DELETE)【英文标题】:Laravel Resource Route destroy (DELETE) without id 【发布时间】:2015-04-13 16:01:29 【问题描述】:是否可以修改 Laravel 的资源路由,以便我可以在没有 ID 的情况下直接使用 destroy 方法?原因是当我在我的 UsersController 上调用 destroy 时,我只想删除当前经过身份验证的用户,而不是传递的 ID。
如果我只是从 destroy 方法中删除 $id
参数,我会收到以下错误:
RouteCollection.php 第 207 行中的 MethodNotAllowedHttpException
我想我可以将$id
留在那里,但我真的不想要求用户在 URI 中传递 id。
谢谢
【问题讨论】:
因为它是“特殊的”(我的意思是,不像 other 资源),我只会为它制作一条专用路线 @watcher 保持一致会很好,但认为这可能是必需的。啊,哦,好吧,谢谢你的意见。 请记住,您的 Routes 文件基本上是您项目的一个文档。为专门的操作设置单独的路线并不一定是坏事。 @watcher 作为 Laravel 的新手,我总是关心每一行代码在“幕后”的作用和效率。显然有些事情我需要克服! :) 感谢您的帮助。 【参考方案1】:你可以,但你必须为此添加额外的路线:
Route::delete('user', 'UserController@destroyAuthenticated');
Route::resource('user', 'UserController');
然后在你的控制器中是这样的:
public function destroyAuthenticated()
Auth::user()->delete();
【讨论】:
以上是关于没有 id 的 Laravel 资源路由销毁(DELETE)的主要内容,如果未能解决你的问题,请参考以下文章