基本思想是像子域架构一样工作,但用户帐户将出现在网站名称之后。
我有一个名为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结构。
应该是这样吗?
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
});
});
});
这是我到目前为止所做的,但我不知道这是否是一个好方法。它是正确的?
在路由的末尾定义该组,以便其他路由具有优先权。然后你可以使用 slug 作为用户名(或你正在使用的任何东西)
Route::group(['prefix' => '{username}'], function(){
Route::group(['prefix' => 'videos'], function(){
...
});
});
但是这个 groupe 更有可能尝试拿起你所有的404
. 也许你可以添加额外的约束
Route::group(['prefix' => '{username}'], function(){
...
})->where('username', '[A-Za-z]+');
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句