验证-静态,模型,控制器

静态调用

如果需要使用内置的规则验证单个数据,可以使用静态调用的方式。

// 日期格式验证
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

控制器验证

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

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

如果定义了验证器类的话,例如:

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‘],
    ];
}

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

$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);
}

模型验证

在模型中的验证方式如下:

$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());
}

第二个参数如果不传的话,则采用默认的错误提示信息。

如果使用下面的验证器类的话:

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‘],
    ];
}

模型验证代码可以简化为:

$User = new User;
// 调用当前模型对应的User验证器类进行数据验证
$result = $User->validate(true)->save($data);
if(false === $result){
    // 验证失败 输出错误信息
    dump($User->getError());
}

如果需要调用的验证器类和当前的模型名称不一致,则可以使用:

$User = new User;
// 调用Member验证器类进行数据验证
$result = $User->validate(‘Member‘)->save($data);
if(false === $result){
    // 验证失败 输出错误信息
    dump($User->getError());
}
时间: 2024-08-25 07:06:16

验证-静态,模型,控制器的相关文章

CodeIgniter视图 & 模型 & 控制器

-------------------------------------------------------------------------------------------------------- 载入视图 $this->load->view('home/name'); //可以用子文件夹存储视图,默认视图文件以'.php'结尾 载入多个视图 $data['title'] = 'chenwei'; //给视图添加动态数据 $data['message'] = 'Your messa

用交叉验证改善模型的预测表现

预测模型为何无法保持稳定? 让我们通过以下几幅图来理解这个问题: 此处我们试图找到尺寸(size)和价格(price)的关系.三个模型各自做了如下工作: 第一个模型使用了线性等式.对于训练用的数据点,此模型有很大误差.这样的模型在初期排行榜和最终排行榜都会表现不好.这是"拟合不足"("Under fitting")的一个例子.此模型不足以发掘数据背后的趋势. 第二个模型发现了价格和尺寸的正确关系,此模型误差低/概括程度高. 第三个模型对于训练数据几乎是零误差.这是因

简单讲解MVC(视图/模型/控制器)

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑.MVC被独特的发展起来用于映射传统的输入.处理和输出功能在一个逻辑的图形化用户界面的结构中. 视图 视图是用户看到并与之交互的界面.对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的W

tp框架实现ajax注册验证 静态验证

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

Eclipse验证静态资源文件时很慢

我在使用Eclipse开发项目时,Eclipse一直在验证FCKEditor,进度半天不变.修改项目的.project文件,去掉配置 org.eclipse.wst.jsdt.core.javascriptValidator 重启Eclipse后正常. 即注释掉代码: <buildCommand>  <name>org.eclipse.wst.jsdt.core.javascriptValidator</name>  <arguments>  </ar

与你相遇好幸运,Sail.js新建模型控制器

sails generate api user  创建了user的controller和models sails generate api user index 创建了user的controller和models  和 index方法 sails generate model user 创建了user的models sails generate  controller user 创建了user的controllers

ASP.NET Core 1.1 静态文件、路由、自定义中间件、身份验证简介

概述 之前写过一篇关于<ASP.NET Core 1.0 静态文件.路由.自定义中间件.身份验证简介>的文章,主要介绍了ASP.NET Core中StaticFile.Middleware.CustomizeMiddleware和Asp.NetCore Identity.但是由于所有的ASP.NET Core的版本有些老,所以,此次重写一次.使用最新的ASP.NET Core 1.1版本.对于ASP.NET Core 1.1 Preview 1会在以后的文章中介绍 目录 使用静态文件 使用路由

ASP.NET MVC 4 (十) 模型验证

模型验证是在模型绑定时检查从HTTP请求接收的数据是否合规以保证数据的有效性,在收到无效数据时给出提示帮助用户纠正错误的数据. 显式模型验证 验证数据最直接的方式就是在action方法中对接收的数据验证,以下面的Model为例: public class Appointment { public string ClientName { get; set; } public DateTime Date { get; set; } public bool TermsAccepted { get; s

spring(7)--注解式控制器的数据验证、类型转换及格式化

7.1.简介 在编写可视化界面项目时,我们通常需要对数据进行类型转换.验证及格式化. 一.在Spring3之前,我们使用如下架构进行类型转换.验证及格式化: 流程: ①:类型转换:首先调用PropertyEditor的setAsText(String),内部根据需要调用setValue(Object)方法进行设置转换后的值: ②:数据验证:需要显示调用Spring的Validator接口实现进行数据验证: ③:格式化显示:需要调用PropertyEditor的getText进行格式化显示. 使用