表单验证

框架提供了一套完整的表单验证解决方案,适用于绝大多数场景。

表单验证支持所有类型的验证以及自定义方法

简单示例:namespaceapp\form;

usebiny\lib\Form;

/**

* @property \app\service\testService $testService

* 自定义一个表单验证类型类 继承Form

*/

classtestFormextendsForm

{

// 定义表单参数,类型及默认值(可不写,默认null)

protected$_rules=[

// id必须为整型, 默认10

'id'=>[self::typeInt,10],

// name必须非空(包括null, 空字符串)

'name'=>[self::typeNonEmpty],

// 自定义验证方法(valid_testCmp)

'status'=>['testCmp']

];

// 自定义验证方法

publicfunctionvalid_testCmp()

{

// 和Action一样可以调用Service和DAO作为私有方法

if($this->testService->checkStatus($this->status)){

// 验证通过

return$this->correct();

}else{

// 验证失败,参数可以通过getError方法获取

return$this->error('非法类型');

}

}

}

定义完验证类,然后就可以在Action中使用了,可以通过getForm方法加载表单// 加载testForm

$form=$this->getForm('test');

// 验证表单字段,true/false

if(!$form->check()){

// 获取错误信息

$error=$form->getError();

return$this->error('参数错误');

}

// 获取对应字段

$status=$form->status;

// 获取全部字段 返回数组类型 ['id'=>1, 'name'=>'billge', 'status'=>2]

$data=$form->values();

注意:在$_rules中未定义的字段,无法在$form中被获取到,就算不需要验证,也最好定义一下

在很多情况下,表单参数并不是都完全相同的,系统支持Form复用,即可以在通用的Form类中自定义一些内容

比如,还是上述例子的testForm,有个类似的表单,但是多了一个字段type,而且对于status的验证方式也需要变化

可以在testForm中添加一个方法// 在testForm中添加

publicfunctionaddType()

{

// 添加type字段, 默认'default', 规则为非空

$this->_rules['type']=[self::typeNonEmpty,'default'];

// 修改status的判断条件,改为valid_typeCmp()方法验证,记得要写这个方法哦

$this->_rules['status'][0]='typeCmp';

}

然后在Action中加载表单也需要添加'addType'作为参数,其他使用方法一致$form=$this->getForm('test','addType');

一个表单验证类里可以写多个附加方法,相互直接并不会有任何影响

验证类型

系统提供了7种默认验证方式,验证失败时都会记录错误信息,用户可以通过getError方法获取

self::typeInt 数字类型,包括整型浮点型,负数

self::typeBool 判断是否为true/false

self::typeArray 判断是否为数组类型

self::typeObject 判断是否为对象数据

self::typeDate 判断是否为一个合法的日期

self::typeDatetime 判断是否为一个合法的日期时间

self::typeNonEmpty 判断是否非空(包括null, 空字符串)

self::typeRequired 有该参数即可,可以为空字符串

验证类型几乎涵盖了所有情况,如果有不能满足的类型,用户可以自定义验证方法,上述例子中已有,不再过多阐述

栈 php 验证格式,表单验证 - 《Biny - 高性能轻量级PHP框架》 - 书栈网 · BookStack...相关推荐

  1. ant-design-vue手机号格式表单验证(可以空但是非空就要符合格式)

    ant-design-vue手机号格式表单验证(可以空但是非空就要符合格式) 需求: input组件代码 验证方法 调用验证方法验证 需求: 对表单中的一个input组件进行表单验证,该input非必 ...

  2. 表单验证-通用表单验证大全/通用表单验证函数收集

    表单验证-通用表单验证大全/通用表单验证函数收集_Web设计论坛 文章来源:IT人才网(http://www.ad0.cn) Javascript表单验证函数大全: 复制内容到剪贴板代码: <s ...

  3. angularjs php登录验证,AngularJs表单验证的方法

    Anjularjs表单验证 能够根据用户在表单中输入的内容给出实时视觉反馈是非常重要的.在人与人沟通的语境中,表单验证给出来的反馈同获得正确输入同等重要. 表单验证不仅能给用户提供有用的反馈,同时也能 ...

  4. ext form验证tip_FormValidator表单验证

    表单校验测试 验证表单之文本输入框 用户名: 性别: 男女 出生年月: 身份证号 邮箱 学历 --请选择-- 专科 本科 研究生 硕士 博士 国家区号 -地区区号 -电话号码 -分机号码 兴趣爱好 乒 ...

  5. php form表单验证,Validform表单验证总结篇

    近期项目里用到了表单的验证,选择了Validform_v5.3.2. 先来了解一下一些基本的参数: 通用表单验证方法: Demo:$(".demoform").Validform( ...

  6. python表单验证_python表单验证封装

    在Web程序中往往包含大量的表单验证的工作,如:判断输入是否为空,是否符合规则. hello hostname: ip: port: phone: HTML #!/usr/bin/env python ...

  7. iview 表单 验证_iview 表单验证

    北京市 上海市 深圳市 - 男 女 提交 重置 export default { data () { return { formValidate: { name: '', mail: '', city ...

  8. h5 php表单验证,H5表单验证失败该怎样提示

    这次给大家带来H5表单验证失败该怎样提示,怎么用H5表单验证失败的提示?H5表单验证失败提示的注意事项有哪些,下面就是实战案例,一起来看一下. 我们知道,前端的童鞋在写页面时, 都不可避免的总会踩到 ...

  9. php ci提交表单验证,ci表单验证代码

    概述 这是只考虑php对表单数据的接收处理.至于js部分以前会结合validate来讲解下 在解释 CodeIgniter 的数据验证处理之前,让我们先描述一下一般的情况: 一个表单显示了. 你填写并 ...

最新文章

  1. Oracle如何代码编辑,配置UltraEdit为Oracle PL/SQL代码编辑器
  2. 仓库处理中 无法修改_阿里云自研数据仓库 AnalyticDB 再捧 TPC 全球冠军
  3. hive中存Array类型的数据的案例,将字符串的数组格式转成数组的字符串,自定义函数方式处理‘[12,23,23,34]‘字符串格式的数据为array<int>格式的数据。
  4. Caffe + CUDA8.0 + CuDNNv5.1 + OpenCV3.1 + Ubuntu14.04 配置参考文献 ---- Wang Xiao Anhui University CVP
  5. ManageEngine保护您的浏览器
  6. CRMEB v4二开文档
  7. 上大学了,但学校一般,该怎么办?
  8. 【渝粤教育】电大中专新媒体营销实务 (6)作业 题库
  9. 工厂方法 Factory Method
  10. 4月电脑分辨率TOP10 :仅亚军1920*1080占比上涨
  11. c语言解析url编码,在C语言中如何实现对编码后的URL进行解码
  12. android矩阵计算器
  13. 华为云会议的前世今生
  14. 控制变量!控制变量!
  15. EasyExcel合并单元格策略样例
  16. 视频转换横竖屏、去色,视频剪辑
  17. 【BZOJ30472125】Freda的传呼机
  18. 【Shotcut】开源免费视频编辑软件 - 微信视频编辑利器
  19. 二叉排序树,平衡二叉树和哈夫曼树
  20. 渝粤题库 陕西师范大学 《旅游法规》作业

热门文章

  1. 使用云原生buildpacks将你的代码转换成Docker Image | 技术干货
  2. 漫画:如何实现大整数相乘?(下)
  3. Android自动化打包工具,利用Jenkins实现Android自动化打包
  4. RabbitMQ镜像策略set_policy
  5. Vue优化策略_项目上线_02
  6. Flowable springboot项目自定义中文字体
  7. gblfy博客配色模板
  8. button hover逐渐变色_两当水库界桩@产品长久不变色 - 两当安全防护
  9. 实现mvcc_MySQL 的多版本并发控制(MVCC) 是干啥的?
  10. android 语音编码,android – 如何将录制的语音编码为ogg vorbis?