当前位置:首页 > CMS教程 > 其它CMS > 列表

laravel实现前后台路由分离的方法

发布:smiling 来源: PHP粉丝网  添加日期:2022-01-02 12:26:57 浏览: 评论:0 

今天小编就为大家分享一篇laravel实现前后台路由分离的方法,具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧。

当我们把路由写到一个文件中时,路由显得杂乱不堪,不利于维护,这时我们需要将laravel路由进行分离

实现步骤:

1、首先在app/Https/Controlles/文件下建立 Frontend(前端) Backend(后端) API(接口) 文件

2、在app/Https/建立对应的路由文件

3、打开app/Providers/RouteServiceProvider.php 定义各个功能对应的路由文件

代码如下:

  1. <?php 
  2.    
  3. namespace App\Providers; 
  4.    
  5. use Illuminate\Routing\Router; 
  6. use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider; 
  7.    
  8. class RouteServiceProvider extends ServiceProvider 
  9.  /** 
  10.  * This namespace is applied to the controller routes in your routes file. 
  11.  * 
  12.  * In addition, it is set as the URL generator's root namespace. 
  13.  * 
  14.  * @var string 
  15.  */ 
  16.  protected $namespace = 'App\Http\Controllers'
  17.  protected $backendNamespace
  18.  protected $frontendNamespace
  19.  protected $apiNamespace
  20.  protected $currentDomain
  21.    
  22.  /** 
  23.  * Define your route model bindings, pattern filters, etc. 
  24.  * 
  25.  * @param \Illuminate\Routing\Router $router 
  26.  * @return void 
  27.  */ 
  28.  public function boot(Router $router
  29.  { 
  30.  // 
  31.  $this->backendNamespace = 'App\Http\Controllers\Backend'
  32.  $this->frontendNamespace = 'App\Http\Controllers\Frontend'
  33.  $this->apiNamespace = 'App\Http\Controllers\API'
  34. // $this->currentDomain = $this->app->request->server->get('HTTP_HOST'); 
  35.  $this->currentDomain = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : ""
  36.    
  37.  parent::boot($router); 
  38.  } 
  39.    
  40.  /** 
  41.  * Define the routes for the application. 
  42.  * 
  43.  * @param \Illuminate\Routing\Router $router 
  44.  * @return void 
  45.  */ 
  46.  public function map(Router $router
  47.  { 
  48. // $router->group(['namespace' => $this->namespace], function ($router) { 
  49. //  require app_path('Http/routes.php'); 
  50. // }); 
  51.    
  52.  $backendUrl = config('route.backend_url'); 
  53.  $frontendUrl = config('route.frontend_url'); 
  54.  $apiUrl = config('route.api_url'); 
  55.    
  56.  switch ($this->currentDomain) { 
  57.   case $apiUrl
  58.   // API路由 
  59.   $router->group([ 
  60.    'domain' => $apiUrl
  61.    'namespace' => $this->apiNamespace], 
  62.    function ($router) { 
  63.    require app_path('Http/routes-api.php'); 
  64.    } 
  65.   ); 
  66.    
  67.   break
  68.   case $backendUrl
  69.   // 后端路由 
  70.   $router->group([ 
  71.    'domain' => $backendUrl
  72.    'namespace' => $this->backendNamespace], 
  73.    function ($router) { 
  74.    require app_path('Http/routes-backend.php'); 
  75.    } 
  76.   ); 
  77.   break
  78.   default
  79.   // 前端路由 
  80.   $router->group([ 
  81.    'domain' => $frontendUrl
  82.    'namespace' => $this->frontendNamespace], 
  83.    function ($router) { 
  84.    require app_path('Http/routes-frontend.php'); 
  85.    } 
  86.   ); 
  87.    
  88.   break
  89.  } 
  90.    
  91.  } 

此时只需要在不同的控制器中建立路由就 Ok了。

Tags: laravel前后台路由分离

分享到: