【发布时间】:2015-04-12 02:04:44
【问题描述】:
我希望在这里实现的是将用户名设置为myapp.com/username。我可以这样做:
/*
* Other route logic, containing static-url pages, such as
* myapp.com/login so that it overrides any usernames
*/
Route::get('/{username}', function($username) {
return $username . "'s profile.";
});
但是,我还想按照相同的规则包含公司页面。例如,myapp.com/janes-bakery。但我似乎无法做到这一点,因为如果 Laravel 遇到不返回任何内容的路线,它会自动停止搜索路线。相反,它只会抛出一个 404 页面。
我确实认为我可以在这些方面使用类似的东西:
Route::get('/{slug}', ['as' => 'profile', function($slug) {
$company = \App\Models\Company::where('slug', '=', $slug)->get();
if($company->count() > 0) {
return "Company found.";
}
$user = \App\User::where('username', '=', $slug)->get();
if($user->count() > 0) {
return "User found.";
}
abort(404);
}]);
这很好用,但我觉得这是不好的做法。除此之外,我无法访问基于公司/用户的后缀路由。例如myapp.com/jane/friends 或myapp.com/janes-bakery/services。
有人对如何解决这个问题有任何建议吗?我发现很难想出任何解决方案。提前谢谢!
附:重要的是 URL 没有相关性,例如没有 myapp.com/company/user(反之亦然),myapp.com/company_name_here 和 myapp.com/users_name_here 是两个完全不同的东西。
【问题讨论】:
标签: php laravel laravel-5 laravel-routing