2 基础:变量规则
知识梳理
1 给单条变量设置变量规则
2 给当前路由文件配置变量规则
3 变量组合 可以组合出自己想要的路由url
4 动态路由
一 闭包支持
//1 不传参数 Route::rule('think',function (){return '你好';}); http://www.blog.com/admin/think //2 给闭包传递参数 Route::rule('think/:name',function ($name=''){return '你好,'.$name;}); http://www.blog.com/admin/think/JACK 浏览器输出 你好,JACK
二 变量规则
1)更改配置
'default_route_pattern' => '[\w\.]+', 只会匹配字母、数字、中文和下划线字符
并不会匹配特殊字符和符号 一般情况下够用了
2)局部变量规则 [ 单条规则有效 ]
Route::rule('news/:id','News/index')->pattern(['id'=>'\d+']); //限制id值只能是数字 //设置多个变量 Route::rule('news/:id/:uid','News/index')->pattern(['id'=>'\d+','uid'=>'\d+']); //限制id uid值只能是数字
3)全局变量 [ 全局是当前文件 ]
Route::pattern(['id'=>'\d+']); //当前文件中 所有id值都只能是数字
4)组合变量 [ 非常强大 ]
优势:路由规则中没有固定的分隔符,可以随意组合需要的变量规则和分隔符
//路由定义页
<?php use think\facade\Route; //样式1 使用各种符号 Route::get('news-<name>-<id>', 'News/index')->pattern(['name' => '[a-zA-Z]+', 'id' => '\d+']); http://www.blog.com/admin/news-bbs-5.html //样式2 换个符号试试 Route::get('news@<name>-<id>', 'News/index'); http://www.blog.com/admin/news@jj-66.html //样式3 中间没有任何分隔符 Route::get('news<name><id>','News/index')->pattern(['name' => '[a-zA-Z]+', 'id' => '\d+']); http://www.blog.com/admin/newsjj66.html //样式4 使用可选参数 Route::get('news<name><id?>','News/index')->pattern(['name' => '[a-zA-Z]+', 'id' => '\d+']); http://www.blog.com/admin/newsjj66.html //可以匹配 http://www.blog.com/admin/newsjj.html //也可以匹配 //控制器文件 <?php namespace app\admin\controller; class News { public function index($name,$id){ return '名字是:'.$name.'ID是'.$id; } }
5)动态路由 [ 把 路由规则中的变量 传入 路由地址中 ]
这个没有搞明白

浙公网安备 33010602011771号