TP5验证规则使用

定义验证器类:

namespace app\index\validate;
use think\Validate;
class User extends Validate
{
    protected $rule = [
        ‘name‘  =>  ‘require|max:25‘,
        ‘email‘ =>  ‘email‘,
    ];

    protected $message = [
        ‘name.require‘  =>  ‘用户名必须‘,
        ‘email‘ =>  ‘邮箱格式错误‘,
    ];

    protected $scene = [
        ‘add‘   =>  [‘name‘,‘email‘],
        ‘edit‘  =>  [‘email‘],
    ];
}
 

①静态调用(使用内置的规则验证单个数据,返回值为布尔值

// 日期格式验证
Validate::dateFormat(‘2016-03-09‘,‘Y-m-d‘); // true
// 验证是否有效的日期
Validate::is(‘2016-06-03‘,‘date‘); // true
// 验证是否有效邮箱地址
Validate::is(‘[email protected]‘,‘email‘); // true
// 验证是否在某个范围
Validate::in(‘a‘,[‘a‘,‘b‘,‘c‘]); // true
// 验证是否大于某个值
Validate::gt(10,8); // true
// 正则验证
Validate::regex(100,‘\d+‘); // true

②模型验证(在模型中的验证方式

$User = new User;
$result = $User->validate(
    [
        ‘name‘  => ‘require|max:25‘,
        ‘email‘   => ‘email‘,
    ],
    [
        ‘name.require‘ => ‘名称必须‘,
        ‘name.max‘     => ‘名称最多不能超过25个字符‘,
        ‘email‘        => ‘邮箱格式错误‘,
    ]
)->save($data);
if(false === $result){
    // 验证失败 输出错误信息
    dump($User->getError());
}

③控制器验证(控制器中进行验证

如果你需要在控制器中进行验证,并且继承了\think\Controller的话,可以调用控制器类提供的validate方法进行验证,如下:

$result = $this->validate(
    [
        ‘name‘  => ‘thinkphp‘,
        ‘email‘ => ‘[email protected]‘,
    ],
    [
        ‘name‘  => ‘require|max:25‘,
        ‘email‘   => ‘email‘,
    ]);
if(true !== $result){
    // 验证失败 输出错误信息
    dump($result);
}

控制器中的验证代码可以简化为:

$result = $this->validate($data,‘User‘);
if(true !== $result){
    // 验证失败 输出错误信息
    dump($result);
}

如果要使用场景,可以使用:

$result = $this->validate($data,‘User.edit‘);
if(true !== $result){
    // 验证失败 输出错误信息
    dump($result);
}

在validate方法中还支持做一些前置的操作回调,使用方式如下:

$result = $this->validate($data,‘User.edit‘,[],[$this,‘some‘]);
if(true !== $result){
    // 验证失败 输出错误信息
    dump($result);
}
 
时间: 2024-10-30 03:12:29

TP5验证规则使用的相关文章

TP5验证规则

系统内置的验证规则如下: 格式验证类 require 验证某个字段必须,例如:'name'=>'require' number 或者 integer 验证某个字段的值是否为数字(采用filter_var验证),例如:'num'=>'number' float 验证某个字段的值是否为浮点数字(采用filter_var验证),例如:'num'=>'float' boolean 验证某个字段的值是否为布尔值(采用filter_var验证),例如:'num'=>'boolean' emai

MVC中的验证规则

前面的博客中曾经提到过ModelBing机制,也在Demo中体现过,在MVC中更吊的是封装了自定义的验证规则.下面来一个Demo来展现一下,看了后,你一定会爱上它的,能让你少写很多JS语句. 1.View层 <span style="font-size:18px;">@*自动绑定实体模型*@ @model MvcApplication1.Models.User <h2>Login</h2> <form method="post&quo

Struts2 验证框架 validation.xml 常用的验证规则

Struts2 验证框架 validation.xml 常用的验证规则 validation.xml 的命名规则和放置路径:文件名:<ActionClassName>-validation.xml<ActionClassName>就是要验证的Action类的名字. 要将此文件放于Class文件相同的目录.如果在Action类在struts配置中有多个action实例(action name),那么对应某个action的验证文件名规则如下:文件名:<ActionClassNam

[Asp.net MVC]Asp.net MVC5系列——在模型中添加验证规则

目录 概述 在模型中添加验证规则 自定义验证规则 伙伴类的使用 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 [Asp.net MVC]Asp.net MVC5系列——添加视图 [Asp.net MVC]Asp.net MVC5系列——添加模型 [Asp.net MVC]Asp.net MVC5系列——从控制器访问模型中的数据 [Asp.net MVC]Asp.net MVC5系列——添加数据 概述 上篇文章中介绍了添加数据,在提交表单的数据的时候,我们需

报错:非介入式客户端验证规则中的验证类型名称必须唯一。下列验证类型出现重复

当在ASP.NET MVC中,针对一个Model进行添加操作的时候,报如下错误: [InvalidOperationException: 非介入式客户端验证规则中的验证类型名称必须唯一.下列验证类型出现重复: range] 原因是第三方验证程序集和MVC固有验证发生名称的冲突. 解决办法:在Model中属性上注释掉第三方程序集提供的验证特性.

Yii CModel中rules验证规则

array( array(‘username’, ‘required’),  array(‘username’, ‘length’, ‘min’=>3, ‘max’=>12),  array(‘password’, ‘compare’, ‘compareAttribute’=>’password2′, ‘on’=>’register’),  array(‘password’, ‘authenticate’, ‘on’=>’login’), array(‘Price’,’num

JQuery validate验证规则

//定义中文消息 var cnmsg = { required: "必选字段", remote: "请修正该字段", email: "请输入正确格式的电子邮件", url: "请输入合法的网址", date: "请输入合法的日期", dateISO: "请输入合法的日期 (ISO).", number: "请输入合法的数字", digits: "只能输入整数

2016/05/15 ThinkPHP3.2.2 表单自动验证实例 验证规则的数组 直接写在相应的控制器里

使用TP 3.2框架 验证规则也可以写到模型里,但感觉有些麻烦, 一是有时候不同页面验证的方式会不一样, 二是看到这个   Add  事件里的代码,就清楚要接收什么数据,如何验证数据能够在第一眼有个大致了解 ①控制器代码页 1 <?php 2 namespace Home\Controller; 3 use Think\Controller; 4 5 header("Content-type: text/html; charset=utf-8"); 6 7 class AddCo

YII 表单验证规则大全

<?php class ContactForm extends CFormModel { public $_id; public $contact;//联系人 public $tel;//电话 public $fax;//传真 public $zipcode;//邮编 public $addr;//地址 public $mobile;//手机 public $email;//邮箱 public $website;//网址 public $qq;//QQ public $msn;//MSN pub