1.在 config 文件夹下面添加 route.php 文件
return [
'frontend' => [
'name' => 'frontend',
'url' => 'www.my.com',
],
'backend' => [
'name' => 'backend',
'url' => 'admin.my.com',
],
'api' => [
'name' => 'api',
'url' => 'api.my.com',
],
];
2.修改 app/Providers/RouteServiceProvider.php 文件
/**
* Define the routes for the application.
*
* @return void
*/
public function map()
{
$currentDomain = $_SERVER['HTTP_HOST'] ? $_SERVER['HTTP_HOST'] : "";
switch ($currentDomain){
case config('route.backend.url') :
Route::domain(config('route.backend.url'))
->middleware('web')//使用web自带的一些中间件等等 在app/Http/Kernel.php里面
->namespace($this->namespace.'\\'.ucfirst(config('route.backend.name')))
->group(base_path('routes/'.config('route.backend.name').'.php'));
break;
case config('route.api.url') :
Route::domain(config('route.api.url'))
->middleware('api')
->namespace($this->namespace.'\\'.ucfirst(config('route.api.name')))
->group(base_path('routes/'.config('route.api.name').'.php'));
break;
default :
Route::domain(config('route.frontend.url'))
->middleware('web')
->namespace($this->namespace.'\\'.ucfirst(config('route.frontend.name')))
->group(base_path('routes/'.config('route.frontend.name').'.php'));
break;
}
// $this->mapApiRoutes();
// $this->mapWebRoutes();
//
}
3.在 app/Http/Controllers 文件夹下面创建 Backend 和 Frontend 及 Api 文件夹
4.分别写入控制器文件
5.在 routes 文件夹下添加 frontend.php 和 backend.php 路由文件
6.在浏览器访问 admin.my.com 即可看到输出
如不行可试试如下命令
composer dump-autoload
7.创建公共方法
在 app 文件夹下面创建 Helper 文件夹及 functions.php 文件(名字可以随便取)
在 composer.json 文件里面的 autoload 里新增如下
"files":[
"app/Helper/functions.php"
]
执行命令
composer dump-autoload
然后就可以愉快的些公共方法了
8.优化 view 方法
在上面的公共方法文件里面写入
/**
*
* @param null $view
* @param array $data
* @param array $mergeData
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
function views($view = null, $data = [], $mergeData = [])
{
$currentDomain = $_SERVER['HTTP_HOST'] ? $_SERVER['HTTP_HOST'] : "";
$name = '';
switch ($currentDomain){
case config('route.backend.url') :
$name = config('route.backend.name').'/';
break;
case config('route.frontend.url') :
$name = config('route.frontend.name').'/';
break;
}
return view($name.$view , $data , $mergeData);
}
在 resources/views 文件夹下创建 frontend 和 backend 文件夹
现在在 Controller 中使用 views 时会根据url自动选择 frontend 还是 backend