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


Posted in PHP onOctober 13, 2019

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

实现步骤:

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

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

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

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

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

代码如下:

<?php
 
namespace App\Providers;
 
use Illuminate\Routing\Router;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
 
class RouteServiceProvider extends ServiceProvider
{
 /**
 * This namespace is applied to the controller routes in your routes file.
 *
 * In addition, it is set as the URL generator's root namespace.
 *
 * @var string
 */
 protected $namespace = 'App\Http\Controllers';
 protected $backendNamespace;
 protected $frontendNamespace;
 protected $apiNamespace;
 protected $currentDomain;
 
 /**
 * Define your route model bindings, pattern filters, etc.
 *
 * @param \Illuminate\Routing\Router $router
 * @return void
 */
 public function boot(Router $router)
 {
 //
 $this->backendNamespace = 'App\Http\Controllers\Backend';
 $this->frontendNamespace = 'App\Http\Controllers\Frontend';
 $this->apiNamespace = 'App\Http\Controllers\API';
// $this->currentDomain = $this->app->request->server->get('HTTP_HOST');
 $this->currentDomain = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : "";
 
 parent::boot($router);
 }
 
 /**
 * Define the routes for the application.
 *
 * @param \Illuminate\Routing\Router $router
 * @return void
 */
 public function map(Router $router)
 {
// $router->group(['namespace' => $this->namespace], function ($router) {
//  require app_path('Http/routes.php');
// });
 
 $backendUrl = config('route.backend_url');
 $frontendUrl = config('route.frontend_url');
 $apiUrl = config('route.api_url');
 
 switch ($this->currentDomain) {
  case $apiUrl:
  // API路由
  $router->group([
   'domain' => $apiUrl,
   'namespace' => $this->apiNamespace],
   function ($router) {
   require app_path('Http/routes-api.php');
   }
  );
 
  break;
  case $backendUrl:
  // 后端路由
  $router->group([
   'domain' => $backendUrl,
   'namespace' => $this->backendNamespace],
   function ($router) {
   require app_path('Http/routes-backend.php');
   }
  );
  break;
  default:
  // 前端路由
  $router->group([
   'domain' => $frontendUrl,
   'namespace' => $this->frontendNamespace],
   function ($router) {
   require app_path('Http/routes-frontend.php');
   }
  );
 
  break;
 }
 
 }
}

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

以上这篇laravel实现前后台路由分离的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
一个可以删除字符串中HTML标记的PHP函数
Oct 09 PHP
在字符串指定位置插入一段字符串的php代码
Feb 16 PHP
php 上一篇,下一篇文章实现代码与原理说明
May 09 PHP
PHP extract 将数组拆分成多个变量的函数
Jun 30 PHP
PHP取得一个类的属性和方法的实现代码
May 22 PHP
PHP函数之日期时间函数date()使用详解
Sep 09 PHP
php5.3提示Function ereg() is deprecated Error问题解决方法
Nov 12 PHP
PHP采集静态页面并把页面css,img,js保存的方法
Dec 23 PHP
PHPCMS V9 添加二级导航的思路详解
Oct 20 PHP
php运行报错Call to undefined function curl_init()的最新解决方法
Nov 20 PHP
PHP对象实例化单例方法
Jan 19 PHP
PHP操作Redis数据库常用方法示例
Aug 25 PHP
Laravel数据库读写分离配置的方法
Oct 13 #PHP
Laravel第三方包报class not found的解决方法
Oct 13 #PHP
php7性能提升的原因详解
Oct 13 #PHP
php抽象方法和普通方法的区别点总结
Oct 13 #PHP
php use和include区别总结
Oct 13 #PHP
阿里对象存储OSS在laravel框架中的使用方法
Oct 13 #PHP
laravel框架 laravel-admin上传图片到oss的方法
Oct 13 #PHP
You might like
兼容firefox,chrome的网页灰度效果
2011/08/08 PHP
PHP常用的缓存技术汇总
2014/05/05 PHP
php实现点击可刷新验证码
2015/11/07 PHP
Laravel框架FormRequest中重写错误处理的方法
2019/02/18 PHP
php curl操作API接口类完整示例
2019/05/21 PHP
Yii框架的布局文件实例分析
2019/09/04 PHP
PHP调用接口API封装的例子
2019/10/11 PHP
基于laravel缓冲cache的用法详解
2019/10/23 PHP
Ctrl+Enter提交内容信息
2006/06/26 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
2013/01/23 Javascript
在JavaScript里防止事件函数高频触发和高频调用的方法
2014/09/06 Javascript
SpringMVC返回json数据的三种方式
2015/12/10 Javascript
jQuery mobile 移动web(4)
2015/12/20 Javascript
jQueryeasyui 中如何使用datetimebox 取两个日期间相隔的天数
2017/06/13 jQuery
初识 Vue.js 中的 *.Vue文件
2017/11/22 Javascript
详解Vue内部怎样处理props选项的多种写法
2018/11/06 Javascript
开源一个微信小程序仪表盘组件过程解析
2019/07/30 Javascript
基于js实现逐步显示文字输出代码实例
2020/04/02 Javascript
[00:44]2016完美“圣”典 风云人物:Mikasa宣传片
2016/12/07 DOTA
[00:58]他们到底在电话里听到了什么?
2017/11/21 DOTA
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
2014/04/15 Python
python3.6生成器yield用法实例分析
2019/08/23 Python
python3实现单目标粒子群算法
2019/11/14 Python
Python Django2.0集成Celery4.1教程
2019/11/19 Python
pytorch之ImageFolder使用详解
2020/01/06 Python
Python同时迭代多个序列的方法
2020/07/28 Python
canvas实现二维码和图片合成的示例代码
2018/08/01 HTML / CSS
HTML中meta标签及Keywords
2020/04/15 HTML / CSS
SteelSeries赛睿官网:游戏外设和配件的领先制造商(耳机、键盘、鼠标和鼠标垫)
2018/06/17 全球购物
小学生暑假感言
2014/02/06 职场文书
质量承诺书范文
2014/03/27 职场文书
英文慰问信
2015/02/14 职场文书
会计稽核岗位职责
2015/04/13 职场文书
思品教学工作总结
2015/08/10 职场文书
MySQL七大JOIN的具体使用
2022/02/28 MySQL
Python实现双向链表
2022/05/25 Python