基本思想是像子域架构一样工作,但用户帐户将来自网站的名称。
我有一个名为 myService.com 的网络服务。 我会有像Paul,Anne,Jhon这样的用户。 我希望Laravel能够为Paul,Anne和Jhon创建这样的主页:
但 myService.com 也有自己的主页和其他网页。我喜欢这个:
Route::get('/', function () {
return view('home');//myService.com HOME page
});
Route::group(['prefix'=>'videos'], function (){
Route::get('/', function () {
return "all videos";
});
Route::get('/{id}', function ($id) {
return "Video => $id";
});
});
Route::group(['prefix'=>'articles'], function (){
Route::get('/', function () {
return "all articles";
});
Route::get('/{id}', function ($id) {
return "Article => $id";
});
});
对于用户,我将拥有几乎相同的URL结构:
myService.com/Paul
myService.com/Paul/videos
myService.com/Paul/videos/id
myService.com/Paul/articles
myService.com/Paul/articles/id
myService.com/Paul2
myService.com/Paul2/videos
myService.com/Paul2/videos/id
myService.com/Paul2/articles
myService.com/Paul2/articles/id
由于我将拥有无限制的用户帐户,因此我不知道如何为此方案设计路径结构。
它应该是这样的吗?
Route::group(['prefix'=>'account'], function (){
Route::get('/', function ($account) {
return "user $account home page";//Ex myService.com/Paul
});
Route::group(['prefix'=>'videos'], function (){
Route::get('/', function () {
return "user account - all videos";//Ex myService.com/Paul/videos
});
Route::get('/{id}', function ($id) {
return "user account video => $id";//Ex myService.com/Paul/videos/id
});
});
Route::group(['prefix'=>'articles'], function (){
Route::get('/', function () {
return "user account - all articles";//Ex myService.com/Paul/articles
});
Route::get('/{id}', function ($id) {
return "user account articles => $id";//Ex myService.com/Paul/articles/id
});
});
});
这是我到目前为止所做的,但我不知道这是不是一个好方法。这是对的吗?
答案 0 :(得分:2)
在路线末尾定义该组,以便其他路线具有优先权。然后你可以使用slug作为用户名(或你正在使用的任何东西)
Route::group(['prefix' => '{username}'], function(){
Route::group(['prefix' => 'videos'], function(){
...
});
});
但是这个群体更有可能尝试拿起你所有的404
。也许你可以添加额外的约束
Route::group(['prefix' => '{username}'], function(){
...
})->where('username', '[A-Za-z]+');