• ExtJS 数据处理-Validations(验证器)


    更新记录
    2022年7月21日 发布。
    2022年7月16日 从笔记迁移到博客。

    ExtJS教程汇总:https://www.cnblogs.com/cqpanda/p/16328016.html

    Validations(验证器)

    验证器说明

    模型支持模型数据的验证
    定义验证在模型中使用validators属性即可

    1. validators: {
    2. //单个验证条件
    3. '字段名称': '验证类型',
    4. //单个验证条件(详细)
    5. '字段名称': { type: '验证条件2', 附加Key: 附加Value },
    6. //多个验证条件
    7. 字段名称: [
    8. { type: '验证条件1' },
    9. { type: '验证条件2', 附加Key: 附加Value }
    10. ]
    11. }

    ExtJS预定义的验证器

    以下是ExtJS预定义的验证器

    1. presence: 这确保特定字段存在一个值,即:非空(not null)、非空字符串''
    2. length: 验证数据的长度,配合最大(max)和最小(min)长度使用
    3. inclusion: 验证数据包含在指定的集合中(list of values),配合list使用
    4. exclusion: 验证数据不在指定的集合中(list of values),配合list使用
    5. email 验证数据邮箱地址
    6. format 验证数据正则表达式,配合matcher使用
    7. range 验证数据的范围,配合最大(max)和最小(min)长度使用

    模型类型的实例,可以使用isValid()方法,检测模型中的数据是否满足验证条件:

    modelInstance.isValid()

    模型验证器内部结构

    image

    image

    image

    image

    实例:

    实例:验证数据不为空(presence)

    1. Ext.define('Employee', {
    2. extend: 'Ext.data.Model',
    3. fields: [
    4. { name: 'id',type: 'int',convert: null },
    5. { name: 'firstName', type: 'string' }
    6. ],
    7. validators: {
    8. firstName: [
    9. { type: 'presence' },
    10. { type: 'length', min: 2 }
    11. ]
    12. }
    13. });

    实例:验证数据长度(length)

    1. Ext.define('MyApp.model.User', {
    2. extend: 'Ext.data.Model',
    3. fields: ...,
    4. validators: {
    5. name: [
    6. { type: 'length', min: 7 },
    7. ]
    8. }
    9. });

    实例:验证数据排除(exclusion)

    1. Ext.define('MyApp.model.User', {
    2. extend: 'Ext.data.Model',
    3. fields: ...,
    4. validators: {
    5. name: [
    6. { type: 'exclusion', list: ['Bender'] }
    7. ]
    8. }
    9. });

    实例:验证数据包含(inclusion)

    1. Ext.define('MyApp.model.User', {
    2. extend: 'Ext.data.Model',
    3. fields: ...,
    4. validators: {
    5. name: [
    6. { type: 'inclusion', list: ['Bender'] }
    7. ]
    8. }
    9. });

    实例:验证数据满足正则(format)

    1. Ext.define('Employee', {
    2. extend: 'Ext.data.Model',
    3. fields: [
    4. { name: 'id',type: 'int',convert: null },
    5. { name: 'phoneNumber', type: 'string' },
    6. ],
    7. validators: {
    8. phoneNumber: {
    9. type: 'format',
    10. matcher: '/^[(+{1})|(00{1})]+([0-9]){7,10}$/'
    11. }
    12. }
    13. });

    实例:验证性别

    1. gender: {
    2. type: 'inclusion',
    3. list: ['男', '女']
    4. },

    实例:单字段多个验证器

    1. Ext.define('MyApp.model.User', {
    2. extend: 'Ext.data.Model',
    3. fields: ...,
    4. validators: {
    5. name: [
    6. 'presence',
    7. { type: 'length', min: 7 },
    8. { type: 'exclusion', list: ['Bender'] }
    9. ]
    10. }
    11. });

    实例:多个字段验证器

    1. Ext.define('Employee', {
    2. extend: 'Ext.data.Model',
    3. fields: [
    4. { name: 'id',type: 'int',convert: null },
    5. { name: 'firstName', type: 'string' },
    6. { name: 'lastName', type: 'string'},
    7. { name: 'fulltime', type: 'boolean', defaultValue: true, convert: null },
    8. { name: 'gender', type: 'string' },
    9. { name: 'phoneNumber', type: 'string' },
    10. ],
    11. validators: {
    12. firstName: [
    13. { type: 'presence' },
    14. { type: 'length', min: 2 }
    15. ],
    16. lastName: [
    17. { type: 'presence' },
    18. { type: 'length', min: 2 }
    19. ],
    20. phoneNumber: {
    21. type: 'format',
    22. matcher: '/^[(+{1})|(00{1})]+([0-9]){7,10}$/'
    23. },
    24. gender: {
    25. type: 'inclusion',
    26. list: ['Male', 'Female']
    27. },
    28. }
    29. });

    实例:定义模型验证并实例化模型并验证数据是否符合要求

    1. //定义模型
    2. Ext.define('Student',{
    3. extend: 'Ext.data.Model',
    4. fields: [
    5. {name:'id', type:'int'},
    6. {name:'name',tyle:'string'}
    7. ],
    8. validators: {
    9. id:'presence',
    10. name: { type:'length',min: 3 }
    11. }
    12. });
    13. //创建实例
    14. var studentData = Ext.create('Student',{
    15. id:666,
    16. name:'panda'
    17. });
    18. //验证模型的数据是否有效
    19. if(studentData.isValid())
    20. {
    21. var id = studentData.get('id');
    22. var name = studentData.get('name');
    23. console.log(id);
    24. console.log(name);
    25. }
    26. else
    27. {
    28. console.log('student data is not valid');
    29. }

    实例:验证模型数据是否有效

    1. //定义模型
    2. Ext.define('User',{
    3. extend: 'Ext.data.Model',
    4. fields: [
    5. {
    6. name: 'id',
    7. type: 'int'
    8. },
    9. 'name',
    10. 'age'
    11. ],
    12. validators: { //定义验证器
    13. name: 'presence',
    14. age: [
    15. {type: 'presence',min: 3, max: 4},
    16. ]
    17. }
    18. })
    19. //创建模型实例
    20. var user = Ext.create('User',{
    21. id: 666,
    22. name: 'panda',
    23. age: 666
    24. });
    25. //验证是否有效数据
    26. console.log(user.isValid());

    实例:获得验证错误信息

    注意:validate()方法返回的类型是Ext.data.ErrorCollection

    1. if (myclient.isValid()){//Step 4
    2. console.log("myclient model is correct");
    3. }
    4. else{
    5. //Step 5
    6. console.log("myclient model has errors");
    7. //获得错误信息
    8. var errors = myclient.validate();
    9. errors.each(function(error){
    10. console.log(error.field,error.message);
    11. });
    12. }
  • 相关阅读:
    蓝鹏测控测宽仪系列又添一员大将——双目测宽仪
    Laravel文档阅读笔记-mews/captcha的使用(验证码功能)
    CountDownLatch源码分析
    花体字母代表什么
    Vue路由组件的缓存keep-alive和include属性
    phpcms v9.任意文件上传漏洞复现
    Eureka服务下线太慢,电话被告警打爆了
    Postman接口Mock Servier服务器
    【2021研电赛】基于ADRC的双轴反作用轮自平衡杆
    SQLSERVER基础--存储过程
  • 原文地址:https://blog.csdn.net/weixin_38304160/article/details/125904843