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)动态路由 [ 把 路由规则中的变量 传入 路由地址中 ]

这个没有搞明白

 

posted @ 2021-01-12 16:52  棉花糖88  阅读(166)  评论(0)    收藏  举报