【发布时间】:2015-09-18 08:45:40
【问题描述】:
我想为我的 Laravel 应用创建动态页面 CMS。管理员可以为任何页面提供任何 URI,例如,他可以使用one/two/three URI 创建页面,http://example.com/one/two/three 将指向该站点。我已经发现可以为多个级别的 URL 添加单个路由,如下所示:
get('{uri}', 'PageController@view')->where('uri', '.+');
现在,我还想让/{username} URL 指向用户个人资料。这意味着,如果我需要让它一起工作。对我来说,完美的代码应该是这样的:
get('{username}', 'ProfileController@view');
get('{uri}', 'PageController@view')->where('uri', '.+');
然后,在 ProfileController 中,我想让我的路线走得更远,就像它不存在一样。像这样的:
// ProfileController
public function view()
{
$user = User::whereUsername($username)->first();
if ($user === null) {
// Go to the next route.
}
}
可以用 Laravel 完成吗?
我可以想到另一种解决方案,只是为用户名和页面 uri 映射提供动态路由控制器,但我更愿意将其作为单独的路由。
【问题讨论】:
-
我会在你的
ProfileController路由中添加一个前缀,如/users -
@peaceman 我知道这会让事情变得更容易,但我真的想保留 /{username} 路线。
-
你不能生成一个包含所有管理员定义的路由的 php 文件并将其包含在
ProfileController路由之前吗?这也应该会导致更快的路由过程。