赞
踩
一、路由基本形式 Route::rule(‘路由表达式’,‘路由地址’,‘请求类型’);
1)、理解:
路由表达式:你想为路由地址起的名称
路由地址:格式:模块/控制器/操作方法
请求类型:get、post、put、delete 等等
2)、前提:去到application/config.php 配置路由
// 是否开启路由
'url_route_on' => true, // 开启路由
// 是否强制使用路由
'url_route_must' => false, // 可以使用 path_info 普通模式也可以使用路由模式
3)、进入Route.php 设置路由信息
// 基本路由例子:
// 静态路由
Route::rule('/','Index/index/index'); // 一旦定义了该方法的路由就不能通过普通方式访问
// 带参数路由
Route::rule('one:id','Index/index/canshu'); // 参数获取直接用 input('id') 获取,不能使用input('get.id'),input(get.id)只能获取?id=10 这种方式
// 带多参数路由
Route::rule('two/:id/:name','Index/index/canshu2'); // 这种情况必须带两个参数,否则报错
Route::rule('three/:id/[:name]','Index/index/canshu3'); // []里面表示为可选参数,不带上也不会报错
// 完全匹配
Route::rule('four$','Index/index/wanquanpipei'); // $ 是截至符,four 后面不能带任何东西,否则报错
//额外带参数
Route::rule('five','Index/index/ewai?id=10&name=张三'); // url 直接带参数,使用input()获取
4)、路由请求类型:默认是支持全部即*,tp5.0 的请求类型 get post put delete
//例子:表单控制器,有两种情况,一是初次进入页面(get),二是用户提交信息(post),都是在type 控制器完成,那么该控制器必须支持两种请求类型,只设置其中一种都会报错。
Route::get('leixing','index/index/type'); // 设置get 类型
Route::post('leixing','index/index/type'); // 设置post 类型
// 将上面两个路由合并为一个
Route::rule('leixing/','index/index/type','get|post');
5)、对于put 、delete 这种类型的请求怎么模拟呢?
<form action="leixing" method="post"> <!-- 表单必须为post类型提交 -->
<input type="hidden" name="_method" value="put"> <!-- 添加这个隐藏域,value设置为请求类型 -->
<input type="text" name="name" id="">
<input type="submit" value="提交">
</form>
6)、采用数组形式进行动态批量注册
Route::get([
'/'=>'Index/index/index', // 一旦定义了该方法的路由就不能通过普通方式访问
'one/:id'=>'Index/index/canshu', // 参数获取直接用 input('id') 获取,不能使用input('get.id'),input(get.id)只能获取?id=10 这种方式
'two/:id/:name'=>'Index/index/canshu2', // 这种情况必须带两个参数,否则报错
'three/:id/[:name]'=>'Index/index/canshu3', // []里面表示为可选参数,不带上也不会报错
'four$'=>'Index/index/wanquanpipei', // $ 是截至符,four 后面不能带任何东西,否则报错
'five'=>'Index/index/ewai?id=10&name=张三', // url 直接带参数,使用input()获取
'leixing'=>'index/index/type'
]);
Route::post([
'leixing'=>'index/index/type'
]);
7)、 配置文件批量注册 (项目首选)
return [
'/'=>'Index/index/index', // 一旦定义了该方法的路由就不能通过普通方式访问
'one/:id'=>'Index/index/canshu', // 参数获取直接用 input('id') 获取,不能使用input('get.id'),input(get.id)只能获取?id=10 这种方式
'two/:id/:name'=>'Index/index/canshu2', // 这种情况必须带两个参数,否则报错
'three/:id/[:name]'=>'Index/index/canshu3', // []里面表示为可选参数,不带上也不会报错
'four$'=>'Index/index/wanquanpipei', // $ 是截至符,four 后面不能带任何东西,否则报错
'five'=>'Index/index/ewai?id=10&name=张三', // url 直接带参数,使用input()获取
'leixing'=>['index/index/type',['method'=>'get|post']] // 传入数组设置支持两种类型
];
8)、变量规则
Route::rule(‘路由表达式’,‘路由地址’,‘请求类型’,‘路由参数(数组)’,‘变量规则(数组)’);
Route::rule('one/:id','Index/index/canshu','get',[],['id'=>'\d{1,3}']); // 设置id 变量只能是1-3位的数字*/
9)、快捷路由:快速给控制器注册路由,并且针对不同的【请求类型】可以设置方法前缀,例如:
// 给User控制器设置快捷路由
Route::controller('user','index/User'); // 只需要在 route.php 中注册一下即可,但是对控制器的方法命名有要求
**控制器格式:请求类型接上方法名**
// 控制器写法
class User
{
public function getInfo(){ }
public function getPhone(){ }
public function postInfo(){ }
public function putInfo(){ }
public function deleteInfo(){ }
}
如有不足,请多多指点。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。