博客列表 >tp框架配置路由的初学习

tp框架配置路由的初学习

李明伟的博客
李明伟的博客原创
2019年04月01日 20:28:361775浏览

路由定义在route目录下的route.php中。

最普通的路由——

路由到模块\控制器\方法

//路由到模块/控制器/操作
Route::rule('demo1','index/test/demo1')//rule方法将原有的地址路径映射到rule中,此时原本的路径失效
        ->method('get');//method用于设置请求方法

路由到一个闭包函数的写法

//路由到一个闭包函数
Route::rule('demo2',function (){
    return 'tp框架';
})->method('get');//可以使用rule方法将一个闭包函数映射到rule上

如何开启强制路由

QQ浏览器截图20190401194944.png

当开启强制路由时,就必须定义首页的路由规则,之后所有的路径都需要定义路由规则

//若开启了强制路由,首页也要定义路由规则
Route::rule('/','index/index/index')
        ->method('get');

当控制器中涉及变量参数时,则需要使用路由变量

其中涉及了对url的参数的解析方式的配置QQ浏览器截图20190401195630.png

在配置路由时参数的写法——在rule中填写参数时需要在变量名前加’:‘,添加方括号代表该变量为可选变量

路由变量
Route::rule('route1/:name/[:course]/[:grade]','index/test/route1')
        ->method('get');//在rule中填写参数时需要在变量名前加:,添加方括号代表该变量为可选变量

在路由中可以自定义路由表达式的分隔符

//自定义路由表达式的分隔符
Route::rule('route1-:name-[:course]-[:grade]','index/test/route1')
     ->method('get');//用'-'代替'/'

对路由变量中的变量进行约束与验证

使用框架中Route类提供的pattern方法实现对路由变量的约束与验证(支持数组形式)

//对路由变量中的变量进行约束与验证
Route::rule('route1-<name>-<course?>-<grade?>','index/test/route1')
    ->method('get')
    ->pattern(['name'=>'[a-zA-Z]+','course'=>'[a-zA-z]+','grade'=>'[0-9]+']);//'/d'可代替[0-9']
    //pattern方法可对路由变量进行约束与验证

路由参数

常用的几个参数——ext:URL后缀检测,支持匹配多个后缀,匹配多个后缀时需要使用"|"隔开

method——请求类型检测,支持多个请求类型

ajax——Ajax检测

更多的路由参数详见tp5.1的手册

代码示例

//路由参数
Route::rule('route2','index/test/route2')
    ->method('get')
    ->ext('html|shtml|png');//URL后缀检测,exc方法支持同时设置多个后缀,使用'|'隔开,也可使用链式调用,设置为空后表示不允许添加URL后缀

URL生成

使用URL类中的build方法

控制器中的方法

//URL生成
public function route3(){
    $url = Url::build('index/test/route1',['name'=>'zhu','course'=>'java','grade'=>'98']);
    $url = Url::build('index/route1/zhu/java/98');//URL的build方法也可以构造路由地址
    dump($url);
}

路由配置的部分

QQ浏览器截图20190401202042.png

注:若使用想省去tp框架中index模块的php后缀许要进行以下操作

找到public目录下的static目录下的apache配置文件

QQ浏览器截图20190401202625.png

在index.php后添加'?'

QQ浏览器截图20190401202802.png


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议