Tp5.0路由
路由作用
1.根據實現定義的路由規則,檢驗URL請求,確定執行或者拒絕;
2.路由規則可自定義,隱藏了原URL地址,使訪問地址,使訪問更安全,地址更優雅。
路由模式
開啟路由後,其實只有二中狀態,要麼全部URL請求都採用路由訪問,要麼是有路由規則的用路由訪問,沒有的還是按照PATH_INFO規則訪問。
1.普通模式
配置:'url_route_on=>false
訪問:全部採用PATH_INFO格式
2.混合模式
配置:'url_route_on'=>true,'url_route_must'=>false,
已註冊用路由訪問,為註冊仍用PATH_INFO訪問
3.強制模式
配置:'url_route_on'=>true,'url_rote_must'=>false,
全部訪問必須採用路由模式,包括首頁'/'
路由註冊
1.動態方法:
Route:rule('路由規則','路由地址','請求型別',[路由引數],[變數規則]);
2.配置陣列(配置檔案方式):
return [
'路由規則'=>'路由地址',
'路由規則'=>['路由地址',[路由引數],[變數規則]]
];
路由規則
路由規則就是使用者最終用來訪問的URL地址,並非原始URL地址;
路由識別符號/:變數名1/:變數名2/:[:可選變數名]
路由地址
路由地址,是使用者最終要訪問的URL,也是路由規則的目標,它不像路由規則,可以通過路由引數和變數規則進行檢驗,所以使用者一定要確保路由地址的有效性。
1.路由地址
路由地址,就是使用者用路由規則訪問頁面時,真實跳轉到的地址;
2.路由地址的種類
1)路由到:模組/控制器/操作;
基本語法:Route::rule('路由規則','模組/控制器/操作');
重點理解:
可訪問控制器:'url_controller_layer'=>'controller',
按從右到左的順序進行地址解析:操作->控制器->模組,
支援額外引數(查詢方式):?變數名1=值1&變數名2=值2..
2)路由到:操作方法;
基本語法:Route::rule('路由規則','@模組/控制器/操作');
重點理解:
跳過模組初始化,直接執行控制器中的方法;
模組初始化:配置檔案和公共檔案;
呼叫試圖時必須設定完整模版檔案的路徑。
3)路由到:類的方法(動態與靜態)
基本語法:
Route::rule('路由規則','\完整名稱空間\類名@動態操作');
Route::rule('路由規則','\完整名稱空間\類名::靜態操作');
重點理解:
類必須建立在應用目錄或子目錄中;
靜態方法支援外部動態訪問,但建議在語法上分開;
為了專案規範,除非不得已,否者儘可能少用。
4)路由到:重定向地址(301)
基本語法:Route::rule('路由規則','重定向地址');
重點理解:
重定向地址:'/'或者'http://'開頭的外部地址;
'/':是以當前可訪問的Web目錄開始:如'public';
外部地址是301跳轉,適用與網站遷移。
5)路由到:閉包函式
基本語法:
Route::rule('路由規則',function([引數]){
//閉包函式
});
重點理解:
閉包即使函式中的函式,或方法中的方法;
閉包函式可以接受通過路由規則傳過來的引數;
不再執行任何操作,相當於把方法直接定義在引數中。
路由引數
路由引數是用來檢測路由地址的,準確的講,是用來校驗除了路由變數之外額所有內容。
1.路由引數
路由引數是用來驗證當前的路由規則是否有效的重要依據;
2.路由引數的種類
1)請求型別:['method'=>'get|post'];
請求型別:最常用的是GET和POST,其它瞭解即可(如delete,put等);
使用方法:
如註冊方法已生命型別則無設定:Route::get()/post();
Route::rule()/any():['method'=>'get|post'];
使用路由配置檔案陣列定義:['method'=>'get|post'];
2)URL字尾:['ext'=>'html|shtml']/['deny_ext'=>'php'];
限定可訪問路由規則的URL字尾名稱,預設為html;
使用方法:
允許的URL字尾:['ext'=>'html|shtml'];
禁止的URL字尾:['deny_ext'=>'jpg|png'];
允許URL字尾為空:['ext'=>''];
禁止的URL字尾為空:['deny_ext'=>''];
3)回撥函式:['callback'=>'tp5.com'];
說明:回撥函式返回true則路由規則有效,否者無效;
使用方法:
回撥函式寫在應用公共方法中:common.php;
語法:['callback'=>'回撥函式名稱'];
例如:用回撥函式檢測是否存在某個應用配置項,來決定是否執行路由規則。
4)域名檢測:['domain'=>'tp5.com'];
說明:檢測呼叫當前路由規則的域名是不是引數所指定的域名;
使用方法:
語法格式:['domain'=>'域名'];
支援子域名:['domain'=>'域名'];
5)更多引數,如繫結模組/合併額外引數等請查閱手冊。
變數規則
1.路由變數規則:
用來對動態路由規則中的變數部分,進行校驗的依據。
2.變數規則的使用域:
1 )區域性變數規則:僅對當前路由有效
Route::rule('路由規則','路由地址','請求型別',['路由引數'],['變數規則']);
變臉規則:['動態變數1'=>'正則表示式1','動態變數2'=>'正則表示式2'];
例如:Route::rule('demo','index/demo','GET',[],['id'=>'\d{4}']);
2)全域性變數規則:已註冊的全部路由規則都要遵守
單獨建立:Route::pattern('變數名','正則表示式');
批量建立:
Route::pattern([
'變數名1'=>'正則表示式1',
'變數名2'=>'正則表示式2',
]);
路由變數規則和路由規則可以寫在一起,以陣列的形式。
3..正則表示式
描述字串匹配模式,主要用於字串的查詢/替換與分割;
4.正則表示式有幾部分組成
四部分組成:定界符,院子,元字元和修正符。
定界符:通常用#,~~,/等非原子或元字元反斜槓\都行。
原子:需要匹配的字元,由可見與不可見字元組成;
元字元:限定或修飾原子部分,不能單獨使用;
修正符:限定或修飾整個正則表示式。
變數的規則是路由中的一個重點,也是保證路由規則安全的重要手段,當全域性與區域性的變數規則作用在同一個路由變數上面時,區域性規則覆蓋全域性規則,即區域性的優先順序高於全域性。
路由分組
路由分組,看上去很直觀,其實很抽象,它的高效雲信,依賴於專案前期的科學規劃。
1.什麼情況下,適合進行路由分組?
當多個路由規則中,由相同的路由字首時,分組可以可以提高效率。
2.分組方法
動態方法:Route::group('分組名稱',[路由地址,[路由引數],[變數規則]]);
配置陣列:return['規則'=>[路由地址,[路由引數],[變數規則]];
1)路由引數分類
閉包分組:
Route::group('',function(){
//建立路由規則語句
})
虛擬分組:根據相同路由引數進行分組
別名路由
1.快速註冊同一控制器下所有操作方法(不支援變數規則)
動態方法:Route::alias('規則名稱','模組/控制器',[路由引數]);
靜態陣列:
return[
'alias'=>['規則名稱','模組/控制器',[路由引數]],
];
別名路由,可以進一步簡化路由規則,但是不支援變數規則,僅僅是縮短URL地址,使用請求地址更壞短小優雅。藉助路由引數中的allow和except引數實現黑白名單功能,比較有實際意義。
路由繫結
1.入口繫結
在入口檔案中更新增:BIND_MODULE系統常量
//將當前訪問繫結模組/控制器
define('BIND_MODULE','index');//模組級
define('BIND_MODULE','index/demo');//控制器級
2.入口自動繫結
入口檔名與應用中的模組自動繫結
1)入口自動繫結模組設定:'auto_bind_module'=>true,
2)建立需要繫結的入口檔案:列如:admin.php
3)建立與入口檔案對應的模組與控制器:application/admin/controller/Index.php,並建立預設index()方法
4)直接訪問:域名/admin.php,就會自動執行admin模組中預設控制器中的預設方法
3.動態繫結
語法:Route::bind('模組[/控制器][/操作]');
1)綁定當前的URL到模組
Route::bind('模組]');
2)綁定當前的URL到模組下面的控制器
Route::bind('模組/控制器');
3)綁定當前的URL到模組下面的控制器中的指定操作
Route::bind('模組/控制器/操作');
4.繫結到名稱空間或者類
1)綁定當前的URL到指定名稱空間
Route::bind('app\index\controller','')
2)綁定當前的URL到類
ThinkPHP5路由(原文地址)
結束。
相關推薦
Tp5.0路由
路由作用1.根據實現定義的路由規則,檢驗URL請求,確定執行或者拒絕;2.路由規則可自定義,隱藏了原URL地址,使訪問地址,使訪問更安全,地址更優雅。路由模式開啟路由後,其實只有二中狀態,要麼全部URL請求都採用路由訪問,要麼是有路由規則的用路由訪問,沒有的還是按照PATH_
TP5.0路由和URL
上一篇文章介紹了tp5.0的目錄架構和資料庫的簡單操作。關於資料庫操作這方面我會在其他文章詳細介紹。這篇文章我們主要談一下路由和url。 首先我們要知道ThinkPHP採用單一入口模式訪問應用,對應用的所有請求都定向到應用的入口檔案,系統會從URL引數
tp5.0定義路由 +隱藏介面url地址
php public function api(){ return view(); } public function manage($id){
TP5.0.20路由不生效
環境:Windows 10,Apache 2.4,PHP 5.6TS 定義了好幾條路由規則都不生效,經過排查後發現是.htaccess中的規則有誤 解決 <IfModule
《TP5.0學習筆記---URL和路由篇》
入口檔案 我們都知道thinkphp是一個單入口框架,它所有的請求都通過public/index.php進入,之後通過攜帶不同的引數,轉發到相應的控制器中來實現不同的功能。 單入口檔案:應用程式的所有http請求都由某一個檔案接受並由這個檔案轉發到功能程式碼中 單入口優勢
tp5.0隱藏訪問路由裡面的index.php
官方預設的 .htaccess檔案<IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-
vue2.0 路由知識一
應該 tag cnblogs hist com clas ons -s doctype <!DOCTYPE html> <html> <head> <meta charset="UTF-8">
tp5.0 學習(一):虛擬環境安裝
安裝php admin cat code logs exe erro ron log 一、文件目錄: application: 應用目錄,開發文件存放地 extend:擴展 public:入口文件 thinkphp:核心代碼 vendor:第三方類庫 二、域名Apache配
TP5.0 session
pre keyword str 註冊 用戶註冊 string 5.0 key 保存 在用戶註冊的時候保存session: Session::set(‘name‘,‘thinkphp‘); Session::set(‘name‘,‘thinkphp‘,‘think‘);第一個
vue2.0路由經典介紹
spa 導航 link code 鍵值對 包含 組件 pri query 聲明式 <router-link :to="...">編程式router.push(...) router.push(‘home‘) // 字符串 rout
tp5.0整合七牛雲圖片上傳
分享 http 沒有 ger cti str get res 文件名 這裏以上傳圖片為例 上傳其他文件也是大同小異 使用composer安裝gmars/tp5-qiniu 安裝成功則在vendor目錄下多出一個目錄 這個目錄含有整合七牛雲的所有類包等文件 控制器中添加up
TP5.0 mysql 使用函數時 怎樣用數組的方式來查詢
comm 表達式 字段 stat name 例子 ref www. where 今天在查詢數據的時候 遇到一個小問題 就是在用TP5.0的時候 查詢數據的時候需要用到一個函數 FIND_IN_SET 對於這個函數的用處 就是 首先舉個例子來說: 有個文章表裏面有個ty
vue2.0路由進階
兩種 api 標簽 vue new 模式 pat pla 一個 一、路由的模式 第一種用history方式實現,HTML5使用window.history.pushState()實現路由的切換而不刷新頁面。 第二種使用hash值的方式來實現。 vue2.0兩種都
tp5.0清除緩沖
$path control rmdir code clear cti nds func ear namespace app\admin\controller;use think\Cache;class Caches extends Base{public function
tp5.0行為的用法,可以存入json數據,方便讀取數據。
用法 是我 () func 命名空間 init json數據 json one 1.首先新建個文件夾命名為behavior;2.在文件夾下面新建一個類,如Auth類;3 . 定義命名空間<?php namespace app\admin\behavior;//Conf
vue 2.0 路由切換以及組件緩存源代碼重點難點分析
基於 代碼實現 而是 答案 html fine 傳遞參數 並且 等等 關於vue 2.0源代碼分析,已經有不少文檔分析功能代碼段比如watcher,history,vnode等,但沒有一個是分析重點難點的,沒有一個是分析大命題的,比如執行router.push之後到底是如何
tp5.0中及其常用方法的一些函數方法(自己看)和技巧(不斷添加中)
pro xtend yml 數據庫操作 apach txt 圖標 index run 1.目錄結構 2.路由 3..控制器 4.模型寫法 5.視圖標簽 6.數據庫操作 7.表單驗證 --------------------------- 1.目錄結構
vue2.0路由-適合剛接觸新手簡單理解
outer html 路徑和 簡單 add 配置 訪問 rip one vue路由:vue-router vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,適合用於構建單頁面應用。vue的單頁面應用是基於路由和組件的,路由用於設定訪問路徑,並將
TP5.0中使用trace調試
error conf 使用 配置 文件 技術 bubuko onf 我們 1.在項目 的配置文件config.php 配置, 2.在程序中使用trace: 3.在瀏覽器網頁上打開 得到如下圖所示:點擊 “用戶變量”,即可查看使用trace輸出的變量 或
Django2.0路由層-URLconf
不能 開頭 功能 匹配模式 tail 順序 git 整數 IE DJango2.0路由層-URLconf URL配置(URLconf)就像Django 所支撐網站的目錄樹。 它的本質是URL與要為該URL調用的視圖函數之間的映射表; 對於客戶端發來的某個URL調用哪一段