设为首页 加入收藏

TOP

thinkphp5路由心得(一)
2019-08-23 00:30:29 】 浏览:76
Tags:thinkphp5 路由 心得

路由的作用:
1. 简化URL地址,方便大家记忆
2. 有利于搜索引擎的优化,比如可以被百度的爬虫抓取到

优化URl
1. 前后端分离
修改入口文件,在public下新建admin.php文件,将下面的代码添加进入

1 // 定义应用目录
2  
3 define('APP_PATH', __DIR__ . '/../application/');
4  
5 // 加载框架引导文件
6  
7 require __DIR__ . '/../thinkphp/start.php';

2.绑定模块
1)前后端分离实现的功能
index.php 这个入口文件只能进入前台模块
admin.php 这个入口文件只能进入后台模块
2)绑定模块
在index.php添加 define(‘BIND_MODULE’,’index’); 这样http://www.demo.com/index.php/只能访问前台模块。访问不了后台,http://www.yd.com/index.php/index/index
在admin.php添加 define(‘BIND_MODULE’,’admin’); 这样http://www.demo.com/admin.php只能访问后台模块,访问不了前台,http://www.yd.com/admin.php/index/index
3) 隐藏入口文件(怎么操作就不写了,可以看下文档里面的URL访问下 隐藏入口文件 的说明),这样访问前台模块可以省去index.php,可以用http://www.yd.com/index/index直接访问到


关闭后台的路由
在public下的admin.php中添加这句代码 \think\App::route(false);

// 定义应用目录
 
define('APP_PATH', __DIR__ . '/../application/');
 
//绑定后台
 
define('BIND_MODULE','admin');
 
// 加载框架引导文件
 
require __DIR__ . '/../thinkphp/start.php';
 
 
 
//关闭admin模块的路由,必须写到加载框架引导文件之后
 
\think\App::route(false);

 


路由的三种模式:
1. 普通模式 :完全使用PASH_INFO来访问,比如http://www.yd.com/index.php/index/index,域名+模块+控制器
2. 混合模式 :可以使用路由也可以不使用
3. 强制模式 :必须使用路由


设置路由

一.动态单个设置

在application下的route.php文件内更改

1 use think\Route; //引入Route
2  
3 Route::rule('test','index/index/demo'); //当URL访问http://www.yd.com/test时,访问的是index模块下的index下的控制器下的demo方法

路由形式:
静态路由:Route::rule(‘test’,’index/index/demo’);
带参数的路由: Route::rule(‘getid/:id’,’index/User/getId’);
比如我访问http://www.yd.com/getid/7,或者http://www.yd.com/getid/8,或者http://www.yd.com/getid/9,就是getid后面带个参数

 1 //首先在index模块下的User控制器中写一个getId方法
 2  
 3 public function getId(){
 4  
 5 echo input('id'); //输出id
 6  
 7 }
 8  
 9 //然后在route.php加上这行代码
10  
11 Route::rule('getid/:id','index/User/getId');
12  
13 //最后当我们http://www.yd.com/getid后面加个数字,比如http://www.yd.com/getid/20,页面会显示20

带多个参数路由,比如带两个参数

 1 //index模块下的User控制器中写一个myTime方法
 2  
 3 public function myTime(){
 4  
 5 echo input('year').' 年 '.input('month').'月'; //输出 n年n月
 6  
 7 }
 8  
 9 //然后在route.php加上这行代码
10  
11 Route::rule('time/:year/:month','index/User/myTime');
12  
13 //最后当我们访问http://www.yd.com/time/2018/9,页面会显示2018 年 9月

选择性带参数,就是我们在访问url时,URL后面可以带参数,也可以不带,在写路由文件上的参数带上中括号就行
比如输出年或年月

 1 public function myTime(){
 2  
 3 echo input('year').' 年 '.input('month').'月'; //输出 n年n月
 4  
 5 }
 6  
 7 //然后在route.php加上这行代码
 8  
 9 Route::rule('time/:year/[:month]','index/User/myTime'); //重点:month外面加[]
10  
11 //最后当我们访问http://www.yd.com/time/2018/9,页面会显示2018 年 9月
12  
13 //当我们访问http://www.yd.com/time/2018,页面会显示2018 年 月

纯带参数的路由 不建议使用

 1 //路由写法
 2  
 3 Route::rule(':x/:y','index/User/XAndY');
 4  
 5 //方法
 6  
 7 public function XAndY(){
 8  
 9 echo input('x').' '.input('y');
10  
11 }
12  
13 //访问http://www.yd.com/5/3,页面输出5 3

完全匹配路由 在路由的后面加个$符号

 1 public function comp(){
 2  
 3 echo '我是完全匹配路由';
 4  
 5 }
 6  
 7 //不加$符号,我们字comp后面加多少路径,比如http://www.yd.com/comp/asdfda/asdfasfd/aaa/bbb,页面都能输出 我是完全匹配路由
 8  
 9 Route::rule('comp','index/User/comp');
10  
11  
12  
13 //加上$符号,我们在comp后面加多少路径,比如http://www.yd.com/comp/asdfda/asdfasfd/aaa/bbb,页面不能输出方法的内容
14  
15 Route::rule('comp','index/User/comp');

二.批量设置路由
第一种写法,将上面所有单个动态注册的路由批量注册

 1 Route::rule([
 2  
 3 "test"
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇thinkPHP5.0 URL路由优化 下一篇PHP全栈学习笔记2

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目