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

Laravel 5.4前后台分离,通过不同的二级域名访问方法

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

今天小编就为大家分享一篇Laravel 5.4前后台分离,通过不同的二级域名访问方法,具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧。

第一步:添加app\http\Controllers文件夹里面创建我们要存放前端和后端或者接口的文件夹

列如: Home(前端) Admin(后端) App(接口) 文件夹

Laravel 5.4前后台分离

第二步:修改app\http\providers\RouteServiceProvider.php

  1. <?php 
  2.  
  3. namespace App\Providers; 
  4.  
  5. use Illuminate\Support\Facades\Route; 
  6. use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider; 
  7.  
  8. class RouteServiceProvider extends ServiceProvider 
  9.  /** 
  10.  * This namespace is applied to your controller routes. 
  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 $homeNamespace = 'App\Http\Controllers\Home';//PC端 
  18.  protected $adminNamespace = 'App\Http\Controllers\Admin';//管理后台 
  19.  
  20.  /** 
  21.  * Define your route model bindings, pattern filters, etc. 
  22.  * 
  23.  * @return void 
  24.  */ 
  25.  public function boot() 
  26.  { 
  27.  // 
  28.  
  29.  parent::boot(); 
  30.  } 
  31.  
  32.  /** 
  33.  * Define the routes for the application. 
  34.  * 
  35.  * @return void 
  36.  */ 
  37.  public function map() 
  38.  { 
  39.  //$this->mapApiRoutes(); 
  40.  
  41.  //$this->mapWebRoutes(); 
  42.  $sld_prefix = explode('.',$_SERVER['HTTP_HOST'])[0]; 
  43.  if(config('route.admin_url') == $sld_prefix){ 
  44.   $this->mapAdminRoutes(); 
  45.  }elseif(config('route.home_url') == $sld_prefix){ 
  46.   $this->mapHomeRoutes(); 
  47.  }elseif(config('route.api_url') == $sld_prefix){ 
  48.   $this->mapApiRoutes(); 
  49.  } 
  50.  } 
  51.  
  52.  /** 
  53.  * Define the "web" routes for the application. 
  54.  * 
  55.  * These routes all receive session state, CSRF protection, etc. 
  56.  * 
  57.  * @return void 
  58.  */ 
  59.  protected function mapWebRoutes() 
  60.  { 
  61.  Route::middleware('web'
  62.   ->namespace($this->namespace) 
  63.   ->group(base_path('routes/web.php')); 
  64.  } 
  65.  
  66.  /** 
  67.  * Define the "api" routes for the application. 
  68.  * 
  69.  * These routes are typically stateless. 
  70.  * 
  71.  * @return void 
  72.  */ 
  73.  protected function mapApiRoutes() 
  74.  { 
  75.  Route::prefix('api'
  76.   ->middleware('api'
  77.   ->namespace($this->namespace) 
  78.   ->group(base_path('routes/api.php')); 
  79.  } 
  80.  
  81.  /** 
  82.  * 管理后台 
  83.  */ 
  84.  protected function mapAdminRoutes() 
  85.  { 
  86.  Route::middleware('web'
  87.   ->namespace($this->adminNamespace) 
  88.   ->group(base_path('routes/admin.php')); 
  89.  } 
  90.  
  91.  /** 
  92.  * PC端 
  93.  */ 
  94.  protected function mapHomeRoutes() 
  95.  { 
  96.  Route::middleware('web'
  97.   ->namespace($this->homeNamespace) 
  98.   ->group(base_path('routes/home.php')); 
  99.  } 

第三步:在routes目录下创建admin.php 和home.php 路由

Laravel 5.4前后台分离

第四步:分别在app\Http\Controllers\Admin和app\Http\Controllers\Home

  1. <?php 
  2. namespace App\Http\Controllers\Admin; 
  3. use App\Http\Controllers\Controller; 
  4.  
  5. class AdminController extends Controller 
  6.  public function index() 
  7.  { 
  8.  echo "this is admin"
  9.  } 
  10.  
  11. <?php 
  12. namespace App\Http\Controllers\Home; 
  13. use App\Http\Controllers\Controller; 
  14.  
  15. class HomeController extends Controller 
  16.  public function index() 
  17.  { 
  18.  echo "this is home"
  19.  } 

第五步:分别在admin.php 和home.php 新建路由

Route::get('/', 'AdminController@index');

Route::get('/','HomeController@index');

第六步:测试

Laravel 5.4前后台分离

第七步:运行报错

错误一:laravel Class ‘App\Http\Controllers\Controller' not found

错误二:Class App\Http\Controllers\IndexController does not exist

解决方法:

在PHPstorm Terminal控制台输入“composer dump-autoload”

因为laravel是用composer来加载类,不是命令创建的类要更新autoload。

如果没有使用PHPstorm编辑器的话,我们需要在本地安装composer,然后cmd以管理员运行,进入到项目的根目录执行“composer dump-autoload”

Tags: Laravel 5 4前后台分离

分享到: