Laravel5.6子域名前后台项目分离及页面分离附带自定义公共方法

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值