Laravel 的 Route::resource 怎么验证路由参数?

这样可以

访问 /users/1 通过,访问 /users/a404

Route::pattern('id', '\d+');
Route::get('users/{id}', 'UserController@show')->name('users.show');

这样无效

访问 /users/1 通过,访问 /users/a 也通过

Route::pattern('id', '\d+');
Route::resource('users', 'UserController', ['parameters' => [
    // 重命名为 Id,然后全局 pattern 约束
    'user' => 'id',
]]);
阅读 3.4k
2 个回答
Route::resource('users', 'UserController')->where(['user' => '\d+');

如果只是int,就直接在控制器的show方法 限定参数类型为 int

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题