【问题标题】:can I use route() to make a DELETE request in laravel我可以使用 route() 在 laravel 中发出 DELETE 请求吗
【发布时间】:2016-12-15 16:44:57
【问题描述】:

我正在使用 laravel 并试图删除一些东西。是否可以在 laravel 的 route() 上指定 DELETE 方法??

例如

route('dashboard-delete-user', ['id' => $use->id, 'method'=> 'delete'])

或者类似的东西??

编辑: 我的意思是我可以在刀片模板中的链接或按钮中指定它。类似这样:

href="{{ route('dashboard-delete-user') }}

【问题讨论】:

标签: laravel laravel-5 routing


【解决方案1】:

是的,您可以这样做:

Route::delete($uri, $callback);

https://laravel.com/docs/master/routing#basic-routing

更新

如果由于某种原因您只想使用路由(没有控制器),您可以使用闭包,例如:

Route::get('delete-user/{id}', function ($id) {
    App\User::destroy($id);
    return 'User '.$id.' deleted';
});

【讨论】:

  • 这不是提问者的意图......问题归结为:“是否有可能在 标记内有一个链接来解决 DELETE 路由。(不使用表格)
  • 好吧,OP 在我回答后添加了此信息。现在,我已经用 OP 可能使用的解决方案更新了我的答案。
  • 您更新的解决方案将起作用,但我不会推荐它,因为它完全绕过了该路由的任何 CSRF 保护。 Get 应该只用于显示数据。
【解决方案2】:

没有,或者至少我不知道该怎么做。

开箱即用的唯一方法是构建一个表单来处理它。至少,您需要...

<form action="{{ route('dashboard-delete-user') }}" method="POST">
    {{ method_field('DELETE') }}
    {{ csrf_field() }}
    <button type="submit" value="submit">Submit</button>
</form>

或者您可以创建您尝试链接到的获取路由并让​​它处理逻辑。它不需要是只响应delete删除资源请求的路由。

【讨论】:

  • 虽然 id 不需要声明为 DELETE 路由,但通常的做法是不使用 HTTP GET 进行删除(更新或创建)
【解决方案3】:

是的,您可以使用 URL 助手。 https://laravel.com/docs/5.2/helpers#urls

有多种选择。

【讨论】:

  • 我不明白为什么要投反对票...这正是 OP 所需要的。
猜你喜欢
  • 2012-01-08
  • 2021-11-28
  • 1970-01-01
  • 2018-12-25
  • 1970-01-01
  • 2022-12-10
  • 2017-01-23
  • 2017-10-05
  • 1970-01-01
相关资源
最近更新 更多