为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel:错误未显示

Laravel:错误未显示

PHP
波斯汪 2023-10-15 14:40:31
我正在 laravel 中使用资源,我想要一个自定义 uri 路线来执行(显示)操作,我的路线是:Route::resource('/admin/users', 'UsersController')->except(['show']);Route::get('/admin/users/{user}/show', 'UsersController@show')->name('users.show');我检查了一个测试 url,但在此路由中未显示错误 404,例如:http://127.0.0.1:8000/admin/users/test显示此错误The GET method is not supported for this route. Supported methods: PUT, PATCH, DELETE.当我删除代码 except(['show']) 我的代码工作正常并显示 404 错误,但我的路线列表显示两条用于显示操作的路线|        | GET|HEAD  | backend/users/{user}      | backend.users.show |        | GET|HEAD  | backend/users/{user}/show | backend.users.show 
查看完整描述

4 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

您的两个路由 URI 模式相同,因此您需要在路由之前定义路由resource

Route::get('/admin/users/{user}/show', 'UsersController@show')->name('users.show');
Route::resource('/admin/users', 'UsersController')->except(['show']);


查看完整回答
反对 回复 2023-10-15
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

我找到了这个问题的解决方案


编辑这个文件:


/app/Exceptions/Handler.php


添加这一行


use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException;


public function render($request, Throwable $exception)

{

if ($exception instanceof MethodNotAllowedHttpException) 

         {

        abort(404);

         }

         return parent::render($request, $exception);

}


查看完整回答
反对 回复 2023-10-15
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

这是因为您的路线不是 404 错误,就像您在::resource创建路线时使用的那样,它使用show()update()destroy()方法相同的路线,但使用不同的请求动词。

GET         /photos/{photo}
PUT/PATCH.  /photos/{photo}
DELETE      /photos/{photo}

在文档中了解更多相关信息https://laravel.com/docs/7.x/controllers#resource-controllers

当您指定except(['show'])要删除 get 路由时,但 PUT/PATCH 和 DELETE 方法的路由仍然存在。


查看完整回答
反对 回复 2023-10-15
?
MMTTMM

TA贡献1869条经验 获得超4个赞

尝试替换except(['show'])

  ->only(['index', 'create', 'store', 'update', 'destroy'])

这对你的情况来说效果很好。


查看完整回答
反对 回复 2023-10-15
  • 4 回答
  • 0 关注
  • 73 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信