TP5 路由相关信息摘记

TP5 路由定义

路由注册

rule方法注册

Route::rule('路由表达式','路由地址','请求类新','路由参数(数组)','变量规则(数组)');

例子:

Route::rule('new/:id','index/News/read','get');

对应到下面的:

  • new/:id 路由表达式
  • index/News/read 路由地址
  • get 请求类型

当你访问:http://serverName/new/5时就会自动访问PathInfo模式下的http://serverName/index/News/read/5,这里的5是参数,下面再介绍具体的参数传入方式。

get/post 简化写法

Route::get('new/:id','News/read');
Route::post('new','News/add');

可选参数

上面是使用:ParameterName的形式,表示路由地址中一定要带有该参数,否则不能匹配到路由设置,但是也可以使用[:ParameterName]——加方括号的形式,使用该形式后即使没有传入参数,也会匹配到该路由。

返回数组形式

return [
    'new/:id'=>'News/read',
    'news'=>['Newa/add',['method'=>'post']]
];

路由参数

参数名称 说明
method 请求类型
ext URL后缀
deny_ext 被禁止的后缀
https 检测是否是https请求
domain 域名检测
before_behavior 前置行为检测
after_behavior 后置行为
callback 回调函数
merge_extra_vars 合并额外参数
bind_model 绑定模型
cache 请求缓存
param_depr 路由参数分隔符
ajax Ajax检测
pjax Pjax检测

- 前置/后置行为检测

Route::get(
    'user/:id',
    'index/User/read',
    ['before_behavior'=>'\app\index\behavior\UserCheck']
);

其中的\app\index\behavior\UserCheck表示一个具体的类,其中的方法是掐死的——run()

namespace app\index\behavior;

class UserCheck
{
    public function run()
    {
        if('user/0'==request()->url()){
            return false;
        }
    }
}

变量规则

设置方式

'参数名称'=>'正则表达式'

支持数组形式的多参数验证

全局设置

Route::pattern('参数名称','正则表达式');

路由可设置内容

定义方式 定义格式
模块/控制器 模块/控制器/操作?额外参数=值&额外参数=值
重定向地址 外部地址
控制器的方法 @模块/控制器/方法
类的方法 \完整的命名空间::静态方法 或者 \完整的命名空间@动态方法
闭包函数 闭包函数

快捷路由设置

return [
    '__rest__'=>[
        '路由地址'=>'模块/控制器'
    ]
];

其中各种类型的请求以及对应的方法如下:

请求类型 路由规则 对应操作方法 主要工作
GET 路由地址 index 获取管理页面
GET 路由地址/create create 获取新建页面
POST 路由地址 save 保存新建页面提交数据
GET 路由地址/:参数 read 获取该参数下的信息
GET 路由地址/:参数/edit edit 获取该参数下信息的修改页面
PUT 路由地址/:参数 update 保存修改页面提交过来的数据
DELETE 路由地址/:参数 delete 删除信息

快捷设置时设置多个参数

// 路由地址1和路由地址2之间使用.进行分割
Route::resource('路由地址1.路由地址2'.'模块名/控制器名');

接着就是路由可以这样设置:

http://serverName/路由地址1/参数1/路由地址2/参数2

接着在控制器中,就可以这样获取这两个参数:

public function index(参数1,参数2){}

路由分组

Route::group(
    '路由公共前缀',
    [
        ['路由后缀1'=>['控制器设置']],
        ['路由后缀2'=>['控制器设置']]
    ]
);

默认路由

return [
    '__mission__'=>['控制器设置']
];

或者使用

Route::miss('控制器设置');

你可能感兴趣的:(tp5,php)