crmeb多商户二开crmeb架构二开文档异常处理【4】
路由
使用thinkphp,建议开启强制路由;
不开启强制路由的程序猿不是个好好程序猿(可以有效防止黑客恶意访问,如:猜后台地址,猜文件路径)
开启强制路由:文件位置:config/route.php
‘url_route_must’ => true, // 是否强制使用路由
认识系统路由
当前主要针对CRMEB客户关系管理系统为例指导大家如何配置路由。
对路由的基本知识点,我们在不做过多赘述,不太懂的小伙伴可以前往
Thinkphp开发文档进行学习。
接口地址:http://域名/应用模块目录名/具体业务控制器目录/方法名
controller目下下的业务类文件和route路由下的路由文件基本是一一对应的。
大家也会发现个别业务控制器没有对应的路由文件,这个需要说明一点,业务控制器并不是强制一一对应的,
当然你完全可以把order控制器中的接口地址配置到user路由文件里面,但是为了各模块功能清晰,保证统一管理,不建议你这么做。
如何新增路由
我们以order控制器为例,新增order_demo方法。控制器目录:admin/controller/store/order/StoreOrder.php
public function order_demo()
{
$where = $this->request->postMore([
['one', '2'],
['two', '2'],
]);
$data = $this->services->orderCount($where);
return $this->success($data);
}
配置路由,路由目录:/route/admin.php
Route::post('demo', 'admin.store.order.StoreOrder/order_demo')->name('OrderDemo');
如何修改路由请求方式
我们以order控制器为例,请求访问chart方法。Route::get('chart', 'admin.store.order.StoreOrder/chart')->name('StoreOrderChart')
,是我们当前接口的路由配置,前端以get请求调取接口即可:http://serverName/adminapi/order/chart。
如果我们要修改请求方式,将get修改为post,记得修改四处地方:
- 将接口数据接收方式改为post接收
public function chart()
{
$where = $this->request->postMore([
['data', '', '', 'time'],
[['type', 'd'], 0],
]);
$data = $this->services->orderCount($where);
return $this->success($data);
}
- 路由文件配置改为post请求。
Route::post('chart', 'admin.store.order.StoreOrder/chart')->name('StoreOrderChart');
- 前端调用请求方式务必改为post请求
- 后台菜单【设置】【管理权限】【权限规则】进入数据列表,将订单->订单管理->订单数据请求方式改为post即可,
如何给路由添加混合参数
路由配置:在方法名后/:参数
Route::get('chart/:id', 'admin.store.order.StoreOrder/chart')->name('StoreOrderChart');
控制器:入参传入$id
public function chart($id)
{
$where = $this->request->getMore([
['data', '', '', 'time'],
[['type', 'd'], 0],
]);
$where['orderId'] = $id;
$data = $this->services->orderCount($where);
return $this->success($data);
}
资源路由
支持设置RESTFul
请求的资源路由,方式如下:
Route::resoure('user','user');
表示注册了一个名称为user
的资源路由到User
控制器,系统会自动注册7个路由规则,如下:
| 标识 | 请求类型 | 生成路由规则 | 对应操作方法(默认) |
| —- | —- | —- | —- |
| index | GET | user | index |
| create| GET | user/create | create |
| save | POST | user | save |
| read | GET | user/:id | read |
| edit | GET | user/:id/edit | edit |
| update | PUT | user/:id | update |
| delete | DELETE | user/:id | delete |
路由分组
使用
Route
类的group
方法进行注册,路由分组也支持嵌套,例如:
//分组嵌套
Route::group('user',function(){
Route::get('user_info','user/user/info');
Route::get('group','user.gourp/list');
Route::get('label','user.label/list');
});
//嵌套
Route::group('user',function(){
Route::get('user_info','user/user/info');
Roure::group('group',function(){
Route::get('group','user.gourp/list');
});
Route::group('label',function(){
Route::get('label','user/label/list');
});
});
路由分组与路由中间件配合使用,可以控制访问权限
Route::group('user',function(){
Route::get('user/[:type]','user/list');
})->middleware(\app\index\middleware\AuthTokenMiddleware::class, true);
跨域请求
如果某个路由或者分组需要支持跨域请求,可以使用
Route::get('user/[:type]','user/list')->allowCrossDomain();
跨域请求一般会发送一条
OPTIONS
的请求,一旦设置了跨域请求的话,不需要自己定义OPTIONS
请求的路由,系统会自动加上。
会默认带上header:
Access-Control-Allow-Origin:\*
Access-Control-Allow-Methods:GET, POST, PATCH, PUT, DELETE
Access-Control-Allow-Headers:Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, X-Requested-With
也可以添加或更改header
Route::get('user/[:type]','user/list')->allowCrossDomain([
'Access-Control-Allow-Origin' => 'thinkphp.cn',
'Access-Control-Allow-Credentials' => 'true'
]);
MISS路由
如果希望在没有匹配到所有的路由规则后执行一条设定的路由,可以注册一个单独的
MISS
路由:
Route::miss('public/index');
也可以使用闭包
Route::miss(function(){
return '404 Not Found!';
});
crmeb多商户二开crmeb架构二开文档异常处理【4】相关推荐
- crmeb多商户二开crmeb多商户授权失败
crmeb多商户二开crmeb多商户授权失败 如果测试域名crmeb-test.授权域名 提示授权失败, 例如: 授权域名 mer.crmeb.net, 则测试域名为crmeb-test.mer.cr ...
- 二开CRMEB v4.4.2修复改价后退款金额还是未改价之前的价格问题
二开CRMEB v4.4.2修复改价后退款金额还是未改价之前的价格问题 直接替换更新这个文件就好了 app/services/order/StoreOrderRefundServices.php &l ...
- crmeb多商户二开crmeb类库二开文档 Basic基类【1】
Basic基类 目录结构 ├─basic │ BaseController.php │ BaseManager.php │ BaseMessage.php │ BaseStorage.php │ Ba ...
- 后天淘宝客系统二次开发版【需后天授权码】此源码是二开后的
声明:必须是你已经购买过后天淘宝客系统授权码的.绑定了域名.才可以使用.这个只是二次开发过后的源码.源码是通用的. 然后将本站系统买去使用并用你的授权码才可以正常使用. 下面大多数功能都是找官方二次开 ...
- CRMEB多商户二开流程介绍
本文介绍一下CRMEB多商户二次开发的操作流程,从创建数据库,到实现一个完整添加数据的过程,其他更多方法实现只是路由和方法名的差异,也就不过多赘述. 一.创建数据库 例如数据库名为:eb_is_tes ...
- CRMEB多商户二开教程1
定义新的接口 本文介绍一下CRMEB多商户二次开发的操作流程,从创建数据库,到实现一个完整添加数据的过程,其他更多方法实现只是路由和方法名的差异. 一.创建数据库 例如数据库名为:eb_is_test ...
- CRMEB多商户二开教程3
**创建新的组合数据** 本文给大家介绍CRMEB多商户如何创建,维护,使用组合数据功能. 创建组合数据规则 先找到组合数据管理页面,点击添加组合数据按钮 创建组合数据规则 这里以首页banner数据 ...
- crmeb开源版二开好方便
crmeb使用thinkphp6框架就能行底层逻辑的搭建,thinkphp是一款非常好用的框架也容易上手,开发教程又多加之crmeb开源版对目录结构.代码功能.数据库字典一一列出,方便有需要的开发者对 ...
- crmeb多商户二开文档
CRMEB多商户商城系统 < 项目介绍 > 基于ThinkPhp6+ swoole4+uniapp 开发的一套CRMEB新零售多商户商城系统. CRMEB系统就是集客户关系管理+营销电商系 ...
- JAVA 单商户商城系统 成熟源码 支持二开
三勾商城是开发友好的微信小程序商城,框架支持SAAS,支持发布 iOS + Android + 公众号 + H5 + 各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)等多个平台,不可多得的二开 ...
最新文章
- Git_学习_06_ 放弃本地修改
- php webserver documentroot,PHP $_SERVER['DOCUMENT_ROOT'] 问题
- 解决MyBatis中 Could not set property ~ o f ~异常
- MonoDevelop 1.0 和 Mono 1.9(2.0 beta)发布了
- my paper in EI
- Linux系统调用--getrusage函数详解
- 计算机基础知识教案1,计算机基础知识教案一
- Asp.net的HTTP请求处理过程
- Java的深拷贝的例子
- vue key重复_Vue 前端面试题
- 【SpringBoot_ANNOTATIONS】组件注册 07 @Import 给容器快速导入一个组件
- PTA 硬币找钱问题
- 2021-09-10 LeetCode1894-找到需要补充粉笔的学生编号(每日一题)
- JavaScript下的setTimeout(fn,0)意味着什么?
- 响应式设计的三个步骤
- Docker的上手(Ubuntu140.4 Mate)
- qos pre-classify
- 【Linux篇】第十五篇——线程安全
- Ansible playbook 详解
- python一键电影搜索与下载_[懒人福利]用Python进行[天堂电影]下载资源的搜索