1. 程式人生 > >ThinkPHP5.0路由之路由註冊

ThinkPHP5.0路由之路由註冊

路由

路由功能由\think\Route類完成

概述

由Think PHP5.0預設採用的URL規則是:

http://server/sodule/controller/action/param/value/.....

路由的作用是簡化URL訪問地址,並根據定義的路由型別做出正確解析。

路由模式

ThinkPHP5.0的路由比較靈活,並且不需要強制定義,可總結為以下三種方式:

一,普通模式

關閉路由,完全使用預設的PATH_INFO 訪問URL;

url_route_on   =>false,

路由關閉後,不會解析任何路由規則,採用預設的PATH_INFO模式 訪問URL;

http://server/Name/index.php/module/controller/action/param/value/.....

二、混合模式

開啟路由後並使用路由定義+預設PATH_INFO方式的混合

url_route_on =>true,

url_route_must   =>false,


該方法下面,只需要對需要定義路由規則的訪問地址定義路由規則,其他的仍然按照第一種普通模式的PATH_INFO 模式訪問URL.

三、強制模式

開啟路由,並設定必須定義路由才能訪問:

url_route_on =>true,

url_route_must   =>true,

這種方式必須嚴格給每一個訪問地址定義路由規則(包括首頁),否則將丟擲異常。

首頁的路由規則採用/定義即可,例如下面把網站首頁由輸出Hello,world!我們現需要在route.php這個檔案中配置路由,要使用官方的use  think\Route

Route::get( '/' ,function(){

            return  'Hello,world!';

 } );


則開啟tp5進行訪問的就是hello world!

路由定義

註冊路由規則

路由註冊可以採用方法動態單個和批量註冊,也可以直接定義路由定義檔案的方式進行集中註冊。

動態註冊

路由定義採用\think\Route類的rule方法註冊,通常是在應用的路由配置檔案application/route.php進行註冊,格式是:

use think\Route;  //呼叫Route類方法

Route::rule('路由表示式','路由地址','請求型別','路由引數(陣列)','變數規則(陣列)');

例如註冊如下路由規則:

  1. use think\Route;
  2. // 註冊路由到index模組的News控制器的read操作
  3. Route::rule('new/:id','index/News/read');

我們訪問:

  1. http://serverName/new/5

會自動路由到:

  1. http://serverName/index/news/read/id/5

並且原來的訪問地址會自動失效。

路由表示式(第一個引數)支援定義命名標識,例如:

  1. // 定義new路由命名標識
  2. Route::rule(['new','new/:id'],'index/News/read');
ThinkPHP5.0的路由規則定義是從根目錄開始,而不是基於模組名的。



當我們再次到瀏覽器訪問的時候,訪問的是list方法(list.html)\

注意,路由命名標識必須唯一,定義後可以用於URL的快速生成。

可以在rule方法中指定請求型別,不指定的話預設為任何請求型別,例如:(第三個請求型別)

  1. Route::rule('new/:id','News/update','POST');

表示定義的路由規則在POST請求下才有效。

請求型別包括:型別描述
GETGET請求
POSTPOST請求
PUTPUT請求
DELETEDELETE請求
*任何請求型別

注意:請求型別引數必須大寫。

系統提供了為不同的請求型別定義路由規則的簡化方法,例如:

  1. Route::get('new/:id','News/read');// 定義GET請求路由規則
  2. Route::post('new/:id','News/update');// 定義POST請求路由規則
  3. Route::put('new/:id','News/update');// 定義PUT請求路由規則
  4. Route::delete('new/:id','News/delete');// 定義DELETE請求路由規則
  5. Route::any('new/:id','News/read');// 所有請求都支援的路由規則


預設訪問read方法



如果要定義get和post請求支援的路由規則,也可以用:

  1. Route::rule('new/:id','News/read','GET|POST');

我們也可以批量註冊路由規則,例如:

  1. Route::rule(['new/:id'=>'News/read','blog/:name'=>'Blog/detail']);
  2. Route::get(['new/:id'=>'News/read','blog/:name'=>'Blog/detail']);
  3. Route::post(['new/:id'=>'News/update','blog/:name'=>'Blog/detail']);

註冊多個路由規則後,系統會依次遍歷註冊過的滿足請求型別的路由規則,一旦匹配到正確的路由規則後則開始呼叫控制器的操作方法,後續規則就不再檢測。

定義路由配置檔案

除了支援動態註冊,也可以直接應用目錄下面的rote.php的最後通過返回陣列的方式直接定義路由規則,內容示例如下:

return [ 

'new/:id'=> 'index/Index/read',

‘blog/:id' => [ 'Blog/update' ,[ 'method' => 'post|put' ] , [ 'id' => '\d+' ] ],

];


路由動態註冊和配置定義的方法可以並存,由於檢測機制的問題,動態註冊的效能比路由配置更高一些,尤其是多種請求型別混合定義的時候。

預設情況下,只會載入一個路由配置檔案route.php,如果需要定義多個路由配置檔案,可以修改route_config_file的配置引數,如:

 // 路由配置檔案(支援配置多個)

    'route_config_file'      => ['route', 'route1', 'route2'],


時間:2018.4.30

相關推薦

ThinkPHP5.0路由路由註冊

路由路由功能由\think\Route類完成概述由Think PHP5.0預設採用的URL規則是:http://server/sodule/controller/action/param/value/.....路由的作用是簡化URL訪問地址,並根據定義的路由型別做出正確解析。

vue2.0學習路由

b- active new com emp post highlight view 沒有 下載vue-router: cnpm install vue-router --save router/main.js /*引入所需要的組件*/ import VueRoute

路由路由表查詢演算法概述-雜湊/LC-Trie樹/256-way-mtrie樹

引:路由是網際網路的一個核心概念,廣義的講,它使分組交換網的每個節點彼此獨立,通過路由耦合在一起,甚至在電路交換網中,虛電路的建立也依賴路由,路由就是網路中資料通路的指向標。狹義的講,路由專指IP路由,它支撐著整個IP網路。     由於IP是資料報網路,它是

Internet路由路由表查詢演算法概述-雜湊/LC-Trie樹/256-way-mtrie樹

                說明:本文沒有原始碼分析的內容,然而我認為能理解本質比能看懂原始碼更有用,因為理解了本質之後,你也許就不用再看原始碼了,你甚至都可以寫原始碼了。這就是Linux核心和Cisco的網站中包含大量文件的原因。引:路由是網際網路的一個核心概念,廣義的講,它使分組交換網的每個節點彼此獨

thinkPHP5——後端登入註冊修改使用者資訊

所需檔案如下: 開始專案前,先開啟應用除錯模式(config.php,把false改成true) 一、資料庫 CREATE TABLE `wyt_member` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREME

vue-router(2.0什麼是路由以及使用步驟(筆記)

前端路由: 在web開發中,路由是指根據url分配到對應的處理程式 vue-router: 通過管理url實現url和元件的對應和通過url進行元件之間的切換 可以做單頁面應用(SPA):載入單個HTML頁面,並在使用者與應用程式互動時動態更新該頁面 vue-router的使

Spring Cloud Netflix Zuul原始碼分析路由註冊

微信公眾號:I am CR7如有問題或建議,請在下方留言;最近更新:2018-12-29 前言 繼上一篇Spring Cloud Netflix Zuul原始碼分析之預熱篇,我們知道了兩個重要的類:ZuulHandlerMapping和SimpleControllerHandlerA

ThinkPHP5.0.資源路由和快捷路由

具體指向的控制器由路由地址決定,例如上面的設定,會對應index模組的blog控制器,你只需要為Blog控制器建立以上對應的操作方法就可以支援下面的URL訪問:http://serverName/blog/http://serverName/blog/128http://serverName/blog/28/

thinkphp5.0學習(四):入口檔案、路由模式、路由設定和url生成

一、路由的作用 簡化URL地址,方便記憶 有利於搜尋引擎的優化 二、入口檔案 前後臺分離 在網站public目錄下(專案\public)新建admin.php 開啟admin.ph

Spring Cloud入門教程路由閘道器 Zuul(五)(Finchley版本+Boot2.0)

路由閘道器什麼是Zuul?     Zuul的主要功能是路由轉發和過濾器。路由功能是微服務的一部分,比如/api/payment轉發到到payment服務,/api/login轉發到到login服務。zuul預設和Ribbon結合實現了負載均衡的功能。 zuul有以下功能

android5.0網路策略路由

策略路由在linux中已經存在很久,但是Android5.0開始才真正將其作用發揮出來。這裡主要簡單介紹下策略路由。 策略路由區別於一般的路由就在於,一般的路由是以目的地址作為識別與區分的標識,例如下面這個路由表,它表示所有目的地址為192.168.7.0/24的資料包都直

ThinkPHP5.0路由詳細解答5

快捷路由快捷路由允許你快速給控制器註冊路由,並且針對不同的請求型別可以設定方法字首,例如:Route::controller('user','index/User');User控制器定義如下:namespace app\index\controller;classUser{p

Vue2.0 探索路——vue-router入門教程和總結 二級路由

https://blog.csdn.net/sinat_17775997/article/details/77823455https://www.cnblogs.com/songdongdong/p/7121014.html前言這是關於vue的第三篇博文。https://se

ThinkPHP5路由

路由的作用: 1. 簡化URL地址,方便大家記憶 2. 有利於搜尋引擎的優化,比如可以被百度的爬蟲抓取到 優化URl 1. 前後端分離 修改入口檔案,在public下新建admin.php檔案,將下面的程式碼新增進入 // 定義應用目錄 defi

Thinkphp5筆記八:路由別名Route

d+ oca 控制 edi code dmi 控制器 color local 主要作用:隱藏自己的真實路由名稱 Route.php 使用方法一: <?php use think\Route; Route::alias(‘home‘,‘index/index‘);

Thinkphp5筆記九:路由設置,隱藏indx.php

http pre color follow style write blog gin views 網站根目錄下.htaccess <IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews Rewr

Cisco路由重分發

cisco 路由重分發 在一個大型網絡中可能存在著多種路由協議,因此關系到路由重分發的問題。網絡架構如下圖所示:架構說明:1 R1為總公司路由器;2 R2、R5為上海分公司路由器;3 R3、R4為杭州分公司路由器;4 總公司和分公司之間使用OSPF協議,上海分公司使用RIP協議,而杭州分公司使用靜態

ci 3.0 默認路由放在子文件夾 無法訪問的解決辦法

字符 spa 分享 eth 賦值 details nbsp cto -c 本文轉自:http://blog.csdn.net/sinat_37328421/article/details/69267166 比方說你想配置默認路由為: $route[‘

yii2.0如何優化路由

tac con tty enable gin 2.0 sym yml dex 比如我的路由是 http://localhost/basic/web/?r=site/index 現在想改成 http://localhost/basic/web/site/index 的

背水一戰 Windows 10 (69) - 控件(控件基類): UIElement - Manipulate 手勢處理, 路由事件的註冊, 路由事件的冒泡, 命中測試的可見性

alex remove void express 簡單 let win 位置 edr [源碼下載] 背水一戰 Windows 10 (69) - 控件(控件基類): UIElement - Manipulate 手勢處理, 路由事件的註冊, 路由事件的冒泡, 命中測試的可