# 路由
使用thinkphp,建議開啟強制路由;
不開啟強制路由的程序猿不是個好好程序猿(可以有效防止黑客惡意訪問,如:猜后臺地址,猜文件路徑)
開啟強制路由:文件位置:config/route.php
'url_route_must' => true, // 是否強制使用路由
### 認識系統路由
當前主要針對CRMEB客戶關系管理系統為例指導大家如何配置路由。
對路由的基本知識點,我們在不做過多贅述,不太懂的小伙伴可以前往
[Thinkphp開發文檔](http://www.hmoore.net/manual/thinkphp6_0/1037494)進行學習。
接口地址: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,記得修改四處地方:
1. 將接口數據接收方式改為post接收
~~~
public function chart()
{
$where = $this->request->postMore([
['data', '', '', 'time'],
[['type', 'd'], 0],
]);
$data = $this->services->orderCount($where);
return $this->success($data);
}
~~~
2. 路由文件配置改為post請求。
~~~
Route::post('chart', 'admin.store.order.StoreOrder/chart')->name('StoreOrderChart');
~~~
3. 前端調用請求方式務必改為post請求
4. 后臺菜單【設置】【管理權限】【權限規則】進入數據列表,將訂單->訂單管理->訂單數據請求方式改為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!';
});
```
- 序言
- 系統簡介
- 系統介紹
- 前端腦圖
- 項目介紹
- 新手入門(源碼安裝)
- 運行環境
- 服務器配置及安裝
- 視頻安裝教程
- 服務器及環境搭建
- 服務器購買
- 域名購買
- 域名解析
- 服務器配置
- 寶塔配置
- 創建站點
- 安裝項目
- 1.源碼上傳(必看內容)
- 2.PHP擴展安裝
- 3.環境配置
- 4.運行服務
- 5.一鍵安裝
- 注意事項(很重要)
- 重啟swoole服務
- linux安裝swoole方法
- 特別注意事項
- mysql 5.7注意事項
- https域名
- ssl證書申請
- 公眾號配置
- 公眾號配置
- 公眾號開發配置
- 公眾號菜單
- 設置公眾號菜單
- 關鍵字
- 跳轉網頁
- 跳轉小程序
- 小程序配置
- 1.微信平臺配置
- 2.CRMEB后臺配置
- 3.前端提交審核
- 4.確認發布
- 支付配置
- 支付配置
- 公眾號支付
- 小程序支付
- 支付寶支付
- 其他配置
- 公眾號模板消息
- 小程序訂閱消息
- 商業授權
- 授權說明
- 申請授權
- 安裝常見問題匯總
- 請修改sql_mode文件為NO_AUTO提示
- 版本更新
- 客服設置
- uni-app 打包H5、公眾號
- 版本更新
- 清空數據
- 測試域名
- 部署多套多商戶
- 使用說明
- 商品分類
- 分類說明
- 分類管理
- 品牌分類
- 商品標簽
- 商品管理
- 發布商品
- 商品規格
- 配置說明
- 文件上傳
- 移動端展示說明
- 首頁
- 分類頁
- 個人中心
- 熱門搜索
- 分銷規則
- 分銷配置
- 分銷員管理
- 分銷規則說明
- 分銷員等級
- 分銷禮包
- 傭金說明
- 用戶管理
- 商戶用戶管理
- 平臺用戶管理
- 用戶協議
- 用戶搜索記錄
- 秒殺
- 秒殺規則
- 開啟秒殺活動
- 直播
- 主播實名認證
- 開啟直播
- 添加直播商品
- 預售
- 開啟全款預售
- 開啟定金預售
- 預售協議
- 專題
- 后臺配置
- 前端展示
- 助力
- 開啟助力
- 查看助力活動
- 拼團
- 虛擬拼團設置
- 開啟拼團
- 查看拼團活動
- 積分
- 積分設置
- 積分來源
- 積分使用
- 提現
- 提現規則
- 提現步驟
- 新聞資訊
- 新聞頁面
- 發布資訊
- 賬戶管理
- 賬號信息
- 賬戶資金
- 優惠券
- 添加優惠券
- 發布優惠券
- 領取及使用
- 發放優惠券
- 訂單管理
- 后臺訂單處理
- 前端訂單處理
- 訂單退款
- 訂單打印
- 客服管理
- 添加客服
- 客服權限
- 門店自提
- 開啟門店自提
- 設置核銷權限
- 訂單核銷說明
- 商戶管理
- 商戶分類
- 商戶入駐
- 商戶列表
- 商戶菜單管理
- 店鋪類型
- 財務
- 財務對賬
- 發票管理
- 自動分賬(v1.5及以后版本)
- 郵費說明
- 運費設置
- 運費組成
- 運費模板
- 物流配置
- 公告管理
- 店鋪相關
- 店鋪定位設置
- 店鋪街入口
- 店鋪活動
- 店鋪基本信息設置
- 小票打印
- 小票打印機配置
- 小票打印機設置
- 技術文檔
- 開發規范
- 數據字典
- 目錄結構
- 移動端路由
- 系統配置
- 后臺表單說明
- 短信設置
- 短信賬戶
- 短信配置
- 短信模板
- 一號通
- 電子面單
- 短信提醒
- 商品采集
- 物流查詢
- 付費采集商品配置
- PC端展示說明
- PC端開啟
- PC端平臺頁面配置
- PC端店鋪頁面配置
- 保障服務
- 移動端商品管理
- 開啟移動端商品管理
- 功能說明
- 會員管理
- 會員管理
- 會員權益
- 會員配置
- 社區功能
- 社區分類
- 社區話題
- 社區文章
- 社區評論
- 社區配置
- 通知管理
- 移動前端
- 目錄結構
- 配置說明
- 頁面路徑
- 后臺前端說明
- 總后臺目錄結構
- 商戶后臺目錄結構
- 開發和構建
- APP 打包
- 基礎配置
- 開發調試
- 打包上線
- App打包
- PC端說明
- 安裝教程
- 目錄結構
- 打包教程
- 常見問題
- 服務器問題
- 服務器環境說明
- MySQL 5.7注意事項
- PHP fileinfo擴展安裝
- 后臺登錄頁幻燈片
- 后臺登錄頁logo
- 論壇常見問題匯總
- 個人中心菜單加鏈接
- 子賬號登錄名
- 前后端分離配置
- 重啟swoole進程
- 開論壇勛章
- 源碼下載地址
- 查看/隱藏版本號
- 搜索商品后服務掛了
- 開發文檔
- 架構
- config配置文件
- 容器和依賴注入
- 異常處理
- 路由
- 控制器模塊
- 日志處理
- 自定義指令
- CRMEB類庫
- Basic基類
- Exceptions異常處理
- Interfaces接口類
- Jobs消息隊列
- services服務類
- traits
- listens定時監聽類
- 接口流程
- Controller
- Repository
- Dao
- Model
- 流程
- 訂單流程
- 下單流程
- 退款流程
- 二開教程
- 定義新的接口
- 創建新的頁面
- 創建新的組合數據
- 更換短信模板