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

表单验证

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

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

简单示例: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 有该参数即可,可以为空字符串

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/529169.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

只能获取fixed语句初始值_因用了Insert into select语句,美女同事被开除了!

点击上方 web项目开发,选择 设为星标优质文章,及时送达--Insert into select请慎用。这天xxx接到一个需求,需要将表A的数据迁移到表B中去做一个备份。本想通过程序先查询查出来然后批量插入。但xxx觉得这样有点慢,需要耗费大量的网…

python获取excel数据进行判断输出结果到excel,如何使用python xlrd/xlwt从一个excel工作簿提取数据并输出到另一个excel工作簿?...

我正在为xlutils、xlrd和xlwt创建一个名为excel functions的类,最终我可能会创建一个库。如果你有兴趣帮我做一个删除工作表的功能。您可能希望转向openpyxl和/或pyexcel,因为它们更容易实现,并且有相应的功能。如果要从一个excel工作簿提取数…

php中sql格式化字符串,sqli注入-sprintf格式化字符串带来的注入隐患

PHP中 sprintf()格式化输出详解sprintf()函数把格式化的字符串写入变量中。arg1、arg2、参数将被插入到主字符串中的百分号(%)符号处。该函数是逐步执行的。在第一个%符号处,插入arg1,在第二个%符号处,插入arg2,以此类推。注释:如…

mybatis依赖_这大概就是公司一直用Mybatis的原因!真的太强了

01 什么是MyBatis、Spring?MyBatis是什么?它是一个SQL Mapping框架,它是一个持久化技术框架。再说得简单一点,它只不过是一个操作数据库的框架。Spring是什么?Spring就是一个大容器,不管是IoC还是AOP&#…

php excelreader 中文,如何解决php excel reader导出excel中文乱码?

解决php excel reader导出excel中文乱码的方法:1、如果不使用dump函数,可以通过修改【_defaultEncoding】变量解决问题;2、如果使用dump函数导出excel,需要修改htmlentities函数解决。解决php excel reader导出excel中文乱码的方法…

python画同心圆程序_Python Turtle:使用circle()方法绘制同心圆

I am not at this point interested in an efficient way of producing concentric circles: I want to see what I have to do to get this way to work 为了解决OP的问题,对其原始代码进行更改以使其正常工作是很简单的:turtle_pos(trl, [trl.xcor() …

绕过宝塔禁止的php函数,宝塔disable functions函数全被禁命令执行+加域服务器如何无限制执行命令...

本地搭建实验环境时遇到了不少小问题实验环境2008 R2宝塔搭建的IIS discuz3.2X手动上传shell冰蝎连接(ps:有表哥使用冰蝎的时候提示文件存在但是无法获取密钥,解决办法,使用最新版本的冰蝎即可,具体详情看更新日志)连接上shell发现无法执行命…

anaconda和python区别_初学 Python 者自学 Anaconda 的正确姿势是什么?

事实上Anaconda 和 Jupyter notebook已成为数据分析的标准环境。 简单来说,Anaconda是包管理器和环境管理器,Jupyter notebook 可以将数据分析的代码、图像和文档全部组合到一个web文档中。 接下来我详细介绍下Anaconda,并在最后给出Jupyter …

oracle rman备份整库,RMAN备份恢复整个库

RMAN备份恢复整个库1 查看历史备份集$ rman target /RMAN> list backup;说明与资料档案库中的任何备份都不匹配上述结果说明之前没有备份过2 备份整个库RMAN> backup database;启动 backup 于 21-3月 -15使用通道 ORA_DISK_1通道 ORA_DISK_1: 正在启动全部数据文件备份集…

oracle 24756,关于ORA-24756: transaction does not exist的问题

最近在检查一个数据库时,发现跟踪日志有大量的错误( ORA-24756: transaction does not exist)1、主机系统环境IBM P740#oslevel -s6100-06-05-11152、数据库版本11.2.0.3 RAC ASM两节点3、在数据库跟踪日志中出现大量错误。(alert文件太大无法上传,几乎…

python 函数 全局变量_python3函数内全局变量使用global

原博文 2017-08-16 23:08 −def p_num(): global num num 10 print (num) num 5 p_num() print(num) ... 相关推荐 2019-12-11 15:55 − 如果需要在函数内部改变函数外部的变量,就可以通过在函数内部声明变量为global变量。这样当程序运行至global变量便会替换外部…

java 切面_Java笔试面试精心整理得到89道Spring 核心知识【收藏向】

点击上方"蓝字",关注了解更多Spring Framework 简称 Spring,是 Java 开发中最常用的框架,地位仅次于 Java API,就连近几年比较流行的微服务框架 SpringBoot,也是基于 Spring 实现的,SpringBoot 的…

安装oracle 10g闪退,Windows 7安装Oracle 10g常见错误及解决方法

Windows 7安装Oracle 10g常见错误及解决方法在安装之前&#xff0c;我们要先下载相应的版本。点击&#xff1a;Oracle 10g支持Win7版错误A&#xff1a;正在检查操作系统要求...要求的结果: 5.0,5.1,5.2,6.0 之一实际结果: 6.1检查完成。此次检查的总体结果为: 失败 <<<…

python爬取百度文库_利用Python语言轻松爬取数据

利用 Python 语言轻松爬取数据 对于小白来说&#xff0c;爬虫可能是一件非常复杂、 技术门槛很高的事情。 比如有人认为学爬虫必须精通 Python &#xff0c;然后哼哧哼哧系统学习 Python 的每个知识点&#xff0c;很久之后发现仍然爬不了数据&#xff1b;有的人则认为先要掌握 …

切比雪夫不等式例题讲解_排序不等式,切比雪夫不等式及伯努利不等式

我们比较熟悉的不等式可能就是下面的这个不等式链以及柯西不等式了&#xff1a;对于不等式链的证明我们可以看下面这张图&#xff0c;非常直观形象&#xff1a;不太懂得也可以看这个视频讲解&#xff1a;知乎视频​www.zhihu.com对于柯西不等式的证明及讲解&#xff0c;我们之前…

任务计划命令 linux,linux执行一次性任务计划at命令

at跟crontab一样&#xff0c;都是执行定时计划任务的命令。但不同的是&#xff0c;crontab执行的循环的任务&#xff0c;而at执行的是一次性任务&#xff0c;任务执行完以后便失效。设置任务&#xff1a;at now 1 week -f a.sh #a.sh必须已存在at 01:35 < my-at-jobs.…

linux逻辑文件块,linux逻辑卷组创建以及修改

创建逻辑卷组&#xff1a;一、将扩展的硬盘分区新加一块SCSI硬盘&#xff0c;需要将其分成三个区&#xff1a;代码:#fdisk /dev/sdb进入fdisk模式&#xff1a;Command (m for help):p //查看新硬盘的分区Command (m for help):n //创建新分区可以用m命令来看fdisk命令的内部命…

经济学原理 下载 曼昆_2021南开经济学考研全年规划

先介绍一下本文的作者&#xff0c;本人本科来自于某双非财经类院校&#xff0c;于2019年考入南开大学某应用经济学专业&#xff0c;在2019年考研初始专业课826经济学基础&#xff08;也就是20年的823&#xff09;中拿到了138分的成绩&#xff0c;自认为对专业课的复习有一定心得…

linux系统进程控制实验报告,Linux进程控制实验报告.doc

里奴性进程控制实验报告实验名称: Linux进程控制实验要求:一.编写一个Linux系统C程序&#xff0c;由父亲创建2个子进程&#xff0c;再由子进程各自从控制台接收一串字符串&#xff0c;保存在各自的全局字符串变量中&#xff0c;然后正常结束。父进程调用waitpid等待子进程结束&…

excel中如何对矩阵得对角线进行求和_如何利用图卷积网络进行图形深度学习(第2部分)...

图上的机器学习是一项艰巨的任务&#xff0c;由于高度复杂但信息量丰富&#xff0c;本文是关于如何利用图卷积网络(GCN)进行深度学习的系列文章中的第二篇。我将简要回顾一下上一篇文章&#xff1a;图形卷积网络的高级介绍具有谱图卷积的半监督学习(本文)简要回顾一下在上一篇关…