【发布时间】:2017-01-29 03:33:09
【问题描述】:
我正在玩 Laravel 5.3 中的一个副项目。我有不同的用户类型(例如管理员、学生等),它们是用户模型上的属性:
$user->account_type; // administrator
每种用户类型都有自己的仪表板(和其他控制器),以及它们的命名空间:
Controllers\Administrator\DashboardController;
Controllers\Student\DashboardController;
我所有的控制器和视图等都是根据帐户类型命名的。
我希望每个用户(无论类型如何)都能够转到 domain.com/dashboard 并被重定向到他们的帐户特定控制器。
但是 laravel 只识别路由文件中最后一个重复的 uri。我通读了Router.php和RouteCollection.php文件,似乎是因为URI作为键存储在数组中,如果你尝试重用它,它总是会被覆盖。
我看到另一个尝试过这个的人的帖子,我不希望有一个带有 IF 的控制器(像这样):
public function index()
{
if ($request->user()->account_type == 'administrator') {
/** **/
} elseif ... {
}
}
我不想使用单个控制器来重用 uri,因为我只重用了一些 URI。例如仪表板。我希望事情保持一致,并且我不想在必须重用的每个控制器方法中都进行帐户检查。
我已经尝试限制中间件中路由的加载,但我只能在中间件中抛出异常,我不能说“如果中间件失败则忽略此组”。
希望我已经解释得足够好,但如果需要更多信息,请发表评论并告诉我。
我的问题是:
如何为不同的控制器重用相同的 URI
在路由过程中何时检索到经过身份验证的用户?
【问题讨论】:
标签: php laravel routing laravel-5.3 middleware