tp5学习笔记一一数据验证、视图和模板

九、数据验证
1.定义
在对应的模块下的validate文件夹新建和模块一样的文件,引入验证器的命名空间,并继承类。

namespace app\index\validate;
use think\Validate;
class User extends Validate{
    protected $rule = [
        '字段' => '验证规则|规则条件' 
    ];
    protected $message  =   [
        '字段.验证规则' => '错误提示信息'   
    ];
}

定义验证规则的数组$rule,规定要验证的字段、规则、条件、文字提示等。可直接在验证器类中通过message属性定义错误提示信息。
2. 数据验证
在需要进行验证的控制器方法中调用验证类的check方法完成验证。

$data = [
    'name'  => 'thinkphp',
    'email' => 'thinkphp@qq.com',
];
$validate = new \app\index\validate\User;
if (!$validate->check($data)) {
    dump($validate->getError());// 验证失败 输出错误信息
}

或使用控制器类提供的validate方法进行验证。

$data = [
    'name'  => 'thinkphp',
    'email' => 'thinkphp@qq.com',
];
$result = $this->validate($data,'app\index\validate\User');
if (true !== $result) {
    dump($result);// 验证失败 输出错误信息
}

设置批量验证、验证抛出异常

// 是否批量验证
protected $batchValidate = true;
// 验证失败是否抛出异常
protected $failException = true;

3.验证规则

格式类

规则说明
require字段必须
number是否为纯数字
integer是否为整数
float是否为浮点数
boolean是否为布尔值
email是否为邮箱
array是否为数组
accepted是否为yes/no/1
date是否为有效的日期
alpha是否为纯字母
chs只能是汉字
ip是否为有效的IP地
idCard身份证
zip邮政编码

规则条件

说明规则
长度和区间类in、notIn、between、notBetween、length、max、min、after、before、expire
字段比较类eq 或 = 或 same 、egt 或 >=、gt 或 > 、elt 或 <=、lt 或 <

4.定义错误提示
(1)未定义时,使用系统默认的错误提示。
(2)设置字段对应中文名。

'字段|中文名' => '验证规则|规则条件'

(3)使用message属性进行定义。
5.独立验证
直接使用think\Validate类下的make方法进行独立验证,不需要定义验证器类。

$rule = [
    'name'  => 'require|max:25',
    'email' => 'email'
];
$msg = [
    'name.require'  => '名称必须',
    'email' => '邮箱格式错误'
]
$data = [
    'name'  => 'thinkphp',
    'email' => 'thinkphp@qq.com',
];
$validate = Validate::make($rule,$msg);
if (!$validate->check($data)) {
    dump($validate->getError());
}

十、视图和模板
1.模板渲染
(1)继承系统控制器,调用fetch方法,其格式为:fetch(’[模板文件]’[,‘模板变量(数组)’])
①无参数:自动定位当前操作的模板文件,其规则是:当前模块/view/当前控制器名/当前操作.html
②[模块@][控制器/][操作]:跨模块、指定控制器、指定模板渲染。
(2)控制器类未继承系统控制器类,使用助手函数view,其格式为:view(’[模板文件]’[,‘模板变量(数组)’])
(3)模板变量赋值:assign。另外,fetch、view方法均可传入模板变量进行赋值。
2.变量输出

过滤方法描述
date日期格式化(包含各种时间类型)
format字符串格式化
upper/lower转为大写/小写
default默认值
first/last输出数组的第一个/最后一个元素
raw不使用转义
多个函数共同过滤时,函数之间用“|”分割,函数会按照从左到右的顺序依次调用。

例如:{$name|md5|upper|substr=0,3}
3.模板布局

(1)全局配置
在项目配置文件中添加相关的布局模板设置,适用于全站使用相同布局的情况。
开启layout_on参数,设置入口文件名layout_name。读取模板后,将解析的内容替换到特定的输出变量{CONTENT}。

return  [
     'layout_on'  =>  true, 
     'layout_name'   =>  'layout',
     'layout_item' => '{__CONTENT__}'    //模板替换字符,可自定义。
]
{include file="public/header" /}
  {__CONTENT__}
{include file="public/footer" /}

不使用模板布局:在模板文件开头加上{__NOLAYOUT__}
(2)模板标签
直接在模板文件头部中增加布局标签(布局模板):{layout name="layout" /}
(3)动态布局
内置的layout方法可以灵活的控制局部模板布局的开启和关闭。
4.模板继承
定义一个基础模板,并定义相关的区块block。当子模板继承extend基础模板时,就会对基础模板中的区块进行替换。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值