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

第三步:在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. { 
  7.  public function index() 
  8.  { 
  9.  echo "this is admin"; 
  10.  } 
  11. } 
  12.  
  13. <?php 
  14. namespace App\Http\Controllers\Home; 
  15. use App\Http\Controllers\Controller; 
  16.  
  17. class HomeController extends Controller 
  18. { 
  19.  public function index() 
  20.  { 
  21.  echo "this is home"; 
  22.  } 
  23. } 

第五步:分别在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前后台分离

分享到: