Laravel : 错误未显示
Laravel : errors is not showing
我正在使用 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
您的两个路由 URI 模式相同,因此您需要在 resource
路由之前定义路由:
Route::get('/admin/users/{user}/show', 'UsersController@show')->name('users.show');
Route::resource('/admin/users', 'UsersController')->except(['show']);
这是因为您的路线不是 404 错误,因为当您在创建路线时使用 ::resource
,它使用与 show()
相同的路线,因为它使用 [=13] =] 和 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 方法的路由仍然存在。
尝试用
替换except(['show'])
->only(['index', 'create', 'store', 'update', 'destroy'])
你的情况会很好。
我找到了这个问题的解决方案
编辑此文件:
/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);
}
我正在使用 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
您的两个路由 URI 模式相同,因此您需要在 resource
路由之前定义路由:
Route::get('/admin/users/{user}/show', 'UsersController@show')->name('users.show');
Route::resource('/admin/users', 'UsersController')->except(['show']);
这是因为您的路线不是 404 错误,因为当您在创建路线时使用 ::resource
,它使用与 show()
相同的路线,因为它使用 [=13] =] 和 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 方法的路由仍然存在。
尝试用
替换except(['show'])
->only(['index', 'create', 'store', 'update', 'destroy'])
你的情况会很好。
我找到了这个问题的解决方案
编辑此文件:
/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);
}