TP5路由定义

本文详细介绍了TP5框架中路由的创建方法,包括路由规则、路由表达式、路由地址、请求类型和路由参数。讲解了POST与PUT请求的区别,并探讨了全局和局部变量规则。此外,还提到了资源路由的实现,如路由到操作方法、类方法、重定向和闭包函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建路由规则的方法

Route::rule('路由表达式','路由地址','请求类型','路由参数(数组)','变量规则(数组)')
例如: Route::rule(‘demo/[:name]/[:course]’,‘index/index/demo’,‘GET’,[‘ext’=>‘html’],[‘name’=>’[a-zA-Z]+’,‘course’=>’\w+’]);

路由表达式
  • 路由表达式格式:路由表达式 = 静态路由 + 动态变量
  • 用表达式实例如下表所示
    路由表达式说明
    ‘/’=>‘index’首页
    ‘demo’=>‘index/user/demo’纯静态地址
    ‘demo/:id’=>‘index/user/demo’静态地址+动态必选变量
    'demo/[:name]=>‘index/user/demo’静态地址+动态可选变量
    'demo/:id/[:name]=>‘index/user/demo’静态地址+动态变量[必选+可选]
    ‘:method/:id/[:name]’=>‘index/user/demo’全动态地址[路由表达式中全部内容均动态设置]
    'demo/:id$=>‘index/user/demo’完全匹配[$是正则无字符,表示到此结束,后面再无内容]
    'demo/:id=>‘index/user/demo?age=28&city=beijing’额外参数[指参数不通过路由表达式传入,而是由原始URL传入]
路由地址

路由地址,就是原始的、真实的访问地址,即不启用路由时,用普通模式访问的地址(PATH_INFO)该路由地址,不需要用/结尾

请求类型

Router::rule()中的请求类型必须大写

请求类型用途描述URL格式
GET从服务器端获取数据仅查询,不修改,类似SELECT操作URL?参数表
POST在服务器端创建数据提交并创建新信息,类似INSERT操作URL
PUT改变服务器端数据仅修改不创建,类似UPDATE操作URL?参数表
DELETE删除服务器端资源根据条件删除数据,类似DELETEURL?参数表

POST和PUT都可以向服务器端发送数据。POST作用在集合资源URL上,而PUT做用于具体资源上(URL/参数表)。如果操作前,可以在客户端确定URL,就用PUT,否则就用POST。所以,几乎所有提交操作都用POST发送,它不仅可以完成PUT和DELETE操作,而且无其它附加信息,URL地址更安全~~

便捷请求类型路由

请求类型对应方法实例
GETRouter::get( )Router::get(‘read/:id’,‘index/user/read’)
POSTRouter::post( )Router::get(‘insert/:id’,‘index/user/insert’)
PUTRouter::put( )Router::get(‘update/:id’,‘index/user/update’)
DELETERouter::delete( )Router::get(‘delete/:id’,‘index/user/delete’)
任何类型Router::any( )Router::any(‘read/:id’,‘index/user/read’)
路由参数

路由参数是指可以设置一些路由匹配的条件参数,主要用于验证当前的路由规则是否有效

参数说明
method请求类型检测,支持多个请求类型
extURL后缀检测,支持匹配多个后缀
deny_extURL禁止后缀检测,支持匹配多个后缀
https检测是否https请求
domain域名检测
before_behavior前置行为(检测)
after_behavior后置行为(执行)
callback自定义检测方法
merge_extra_vars合并额外参数
bind_model绑定模型(V5.0.1+)
cache请求缓存(V5.0.1+)
param_depr路由参数分隔符(V5.0.2+)
ajaxAjax检测(V5.0.2+)
pjaxPjax检测(V5.0.2+)

注意:具体的路由限制用法可以参考官方使用手册

变量规则
  • 全局变量规则,即全部路由有效
Route::pattern(变量名,正则);
// 设置name变量规则(采用正则定义)
Route::pattern('name','\w+');
// 支持批量添加
Route::pattern([
    'name'  =>  '\w+',
    'id'    =>  '\d+',
]);
  • 局部变量规则

局部变量规则,仅在当前路由有效,如果一个变量同时定义了全局规则和局部规则,局部规则会覆盖全局变量的定义

Route::get('new/:name','News/read',[],['name'=>'\w+']);
  • 完整URL规则
// 定义GET请求路由规则 并设置完整URL变量规则
Route::get('new/:id','News/read',[],['__url__'=>'new\/\w+$']);
  • 组合变量规则
Route::get('item-<name>-<id>','product/detail',[],['name'=>'\w+','id'=>'\d+']);
//如果是可选变量
Route::get('item-<name><id?>','product/detail',[],['name'=>'[a-zA-Z]+','id'=>'\d+']);
路由地址
  • 路由到模块/控制器/操作
    格式为:[模块/控制器/]操作?参数1=值1&参数2=值2...
    此方式有两个动作:把满足条件的路由规则路由到相关的模块、控制器和操作,然后由App类调度执行相关的操作。
    同时会进行模块的初始化操作(包括配置读取、公共文件载入、行为定义载入、语言包载入等等)
    注意:多级控制器的时候使用.,blog/:id'=>'index/group.blog/read
  • 路由到操作方法
    格式为:@[模块/控制器/]操作
    直接执行某个控制器类的方法,而不需要去解析 模块/控制器/操作这些,同时也不会去初始化模块
  • 路由到类方法
  • 路由到重定向
  • 路由到闭包函数
资源路由
标识请求类型生成路由规则对应操作方法
indexGETblogindex
createGETblog/createcreate
savePOSTblogsave
readGETblog/:idread
editGETblog/:id/editedit
updatePUTblog/:idupdate
deleteDELETEblog/:iddelete
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值