yii2数据验证

1. 客户端验证

yii根据AR类rules()中的验证规则生成相应的Javascript验证代码。通过设置参数enableClientValidation的值来决定是否启用

客户端验证,默认为true,有以下3种方法来设置该参数的值。

(1)在视图文件ActiveForm中对整个form进行设置:

<?php $form = ActiveForm::begin([

‘enableClientValidation‘ =>true

]); ?>

(2)在视图文件ActiveField中对单个field进行设置:

<?= $form->field($model, ‘username‘, [‘enableClientValidation‘=>false])->label(‘用户名‘) ?>

(3)在AR类的rules()函数中设置:

[‘username‘, ‘yii\validators\StringValidator‘, ‘min‘ => 3, ‘max‘ => 30, ‘enableClientValidation‘ => true, ‘on‘ => ‘register‘]

优先级:(2)>(1)>(3)

2. 服务器端验证

(1)$model->validate():

根据rules()中定义的验证规则对所有数据进行验证,验证通过返回true,否则返回false并在页面上显示错误信息。

(2)$model->save():

默认调用$model->validate(),验证通过则直接进行数据库操作,返回true,否则不进行数据库操作,返回false,将错误

信息存储在$model->errors中。若已调用$model->validate(),可以通过传参避免在save()方法中重复验证数据:$model->save(false)。

3. Ajax验证

通过设置参数enableAjaxValidation的值来决定是否启用ajax验证,默认为false。

客户端设置(两种方法):

(1)在视图文件ActiveForm中对整个form进行设置:

<?php $form = ActiveForm::begin([

‘enableAjaxValidation‘ =>true

]); ?>

(2)在视图文件ActiveField中对单个field进行设置:

<?= $form->field($model, ‘username‘, [‘enableAjaxValidation‘=>false])->label(‘用户名‘) ?>

服务器端处理:

if(Yii::$app->request->isAjax) {

$res = \yii\bootstrap\ActiveForm::validate($model);

Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;

return $res;

}

注:有些规则无法使用客户端验证,如unique、exist等。

在rules()验证规则的错误信息中引用属性标签名以及用户输入的值:

[‘username‘, ‘unique‘, ‘on‘ => ‘register‘, ‘message‘ => ‘{attribute}"{value}"已被占用!‘]

{attribute}:属性标签名称;{value}:用户输入的值。

时间: 2024-08-28 03:19:55

yii2数据验证的相关文章

POI 数据验证

从3.8开始,POI使用.xls和.xlsx格式处理数据校验略有不同之处.1)针对一个或多个预定义值检查用户输入到单元格的值以下代码将限制用户能输入到单元格A1的值是三个整数值(10.20.30)之一:    Workbook workbook = new XSSFWorkbook();  // 或者new HSSFWorkbook    Sheet sheet = workbook.createSheet("Data Validation");    // 数据验证帮助类    Da

strut2 的数据验证

数据验证 用户的输入验证,必须做,且工作量巨大. 1.验证的方式 客户端验证:javascript 服务端验证:逻辑验证(我们的代码) 注意:如果客户端和服务端二选一的话,服务器端的不能省. 实际开发中:客户端+服务端 2.Struts2的服务端验证 2.1.编程式验证 前提:                                    动作类必须继承ActionSupport                             在代码中编写验证规则. a.针对动作类中的所有动作方

我这么玩Web Api(二):数据验证,全局数据验证与单元测试

目录 一.模型状态 - ModelState 二.数据注解 - Data Annotations 三.自定义数据注解 四.全局数据验证 五.单元测试   一.模型状态 - ModelState 我理解的ModelState是微软在ASP.NET MVC中提出的一种新机制,它主要实现以下几个功能: 1. 保存客户端传过来的数据,如果验证不通过,把数据返回到客户端,这样可以保存用户输入,不需要重新输入. 2. 验证数据,以及保存数据对应的错误信息. 3. 微软的一种DRY(Don't Repeat

数据验证【web前端,表单】

数据验证 最近做后台比较多,路七八糟的数据验证,弄得不厌其烦.SO,弄了个表单验证的玩意出来,达到快速,简介,不烦人的验证. 下面看看,几种方式的数据验证,有什么不同.先有需要验证的数据: <form> <input type="text" name="name" /> <input type="text" name="password" /> <input type="nu

如何使用JavaScript和正则表达式进行数据验证

利用客户端JavaScript的优势,JavaScript中的正则表达式可以简化数据验证的工作,下面与大家分享下如何使用JavaScript和正则表达式进行数据验证,感兴趣的朋友可以参考下哈 数据验证是网络应用软件从客户端接受数据的重要步骤,毕竟,您需要在使用客户数据前确保其符合预期的格式.在网络应用程序中,您可以选择使用特定平台的工具,比如ASP.NET.JSP等等,或者您可以利用客户端JavaScript的优势,JavaScript中的正则表达式可以简化数据验证的工作. 正则表达式 正则表达

MVC 数据验证

前一篇说了MVC数据验证的例子,这次来详细说说各种各样的验证注解.System.ComponentModel.DataAnnotations 一.基础特性 一.Required 必填选项,当提交的表单缺少该值就引发验证错误. 二.StringLength 指定允许的长度 指定最大长度: [StringLength(20)] //最大长度不超过20个字符 指定最短于最长限制: [StringLength(20,MinimumLength=3)] //最大长度不超过20个字符,最短不能低于3个字符

MVC 3 数据验证 Model Validation 详解

续我们前面所说的知识点进行下一个知识点的分析,这一次我们来说明一下数据验证.其实这是个很容易理解并掌握的地方,但是这会浪费大家狠多的时间,所以我来总结整理一下,节约一下大家宝贵的时间. 在MVC 3中 数据验证,已经应用的非常普遍,我们在web form时代需要在View端通过js来验证每个需要验证的控件值,并且这种验证的可用性很低.但是来到了MVC 新时代,我们可以通过MVC提供的数据验证Attribute来进行我们的数据验证.并且MVC 提供了客户端和服务器端 双层的验证,只有我们禁用了客户

MVC4 数据验证、特性、自动属性总结

最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精    最近在做自学MVC,遇到的问题很多,索性一点点总结下. MVC4数据验证: 本例以程序为例就行说明: public class MyModel { [Required(ErrorMessage = "请输入收件人姓名")] public string Uname { get; set; } [Required(ErrorMessage =

一步一部学习Unity3d学习笔记系1.2 单机游戏和网游的数据验证概念

这一次的笔记的主要内容是单机和网游的数据存储,数据验证方式,在游戏的时候除了控制角色的行动,还涉及到用户角色的升级,经验,金钱赚取,道具购买,技能升级 等等一些数据的交易, 那么单机游戏和网游的区别如下如图: 单机购买流程: 单机游戏的数据存储都是在本地客户端存储的,验证简单,执行简单,在玩单机游戏的时候我想很多人都知道外挂是怎么回事吧没救是通过修改内存,或者是本地数据无敌,随时原地满血复活状态. 网游相对来说数据安全性就比较高了,前几年的网游还有外挂,比如说CF 开启外挂来直接枪枪爆头,隔墙爆