假设一下,想象一下 Laravel 7.x 应用程序中的这条人为路线:Route::get('/profile/{username}', function ($username) { /* code here */})->name('profile.username');{username}我的目标是来自数据库的唯一允许值。假设有一个users包含列的表name,并且level只有那些带有levelof的用户名>5才应该显示允许此路由发生。否则,我们会收到 HTTP 404。Laravel 中有特定的方法可以实现此功能吗?
1 回答
白衣非少年
TA贡献1155条经验 获得超0个赞
这是显式路由模型绑定的绝佳候选者;取决于您想要如何配置它。
该文档涵盖了如何实现这一点;https://laravel.com/docs/7.x/routing#route-model-binding。
或者,中间件也可以工作 - EnsureUsernameExists
:
public function handle($request, Closure $next)
{
$username = $this->route('username');
User::where('username', $username)->where('level', '>', 5)->firstOrFail();
// Or with abort
abort_unless(User::where('username', $username)->where('level', '>', 5)->exists(), 404);
}
或者,您可以使用中间件内部的任一方法在控制器方法内运行检查。
- 1 回答
- 0 关注
- 94 浏览
添加回答
举报
0/150
提交
取消