表单字段验证这可是常见应用开发框架中比较重要的一块儿,至少在我看来是这样的。因此,在设计CMSPAD中的表单验证器过程中,我们研究了很多已存在的PHP框架,提炼他们比较有优势的地方,加上本身的项目经验,开发出了具有极好易用性和极大扩展性的产品:CMSPAD Validator(以下称CV)。
在设计CV过程中,我们考虑到了它是由两种角色使用的:前台美工和后台程序员。
1. 美工角色
假设大部分美工不懂程序开发(包括JavaScript),怎么才能让他们很好的使用CV呢?下面让我们看看下列的用例代码:
<form bind="SimplePortlet.helloWorld">
<input type="text" name="email" bind="email:无效的Email地址;"/>
<input type="text" name="chineseName" bind="chinese:请输入中文字符"/>
<button type="submit">提交</button>
</form>
这是CV的最简化用法,主要方便美工进行简单的客户端输入字段验证。bind属性中主要有两部分组成:验证器名称和出现错误对话框时弹出的内容文字,他们之间使用冒号(:)分隔,其中内容文字是可选的,如果没有,它当然就不弹出文字了。下面看看比较复杂点儿的用法:
<form bind="SimplePortlet.helloWorld">
<input type="text" name="username" bind="length(3,20):请输入长度在3至20字符之间的用户名称"/>
<input type="text" name="idcard" bind="idcard:身份证号码不正确; SimplePortlet.idcard"/>
<button type="submit">提交</button>
</form>
这段代码中,检测用户帐号字段使用了两个参数,来判断帐号长度是否在3至20个字符之间,如果没有则弹出文字;而检测身份证号码字段使用了两个验证器:第一个为客户端验证,检查身份证号码规则是否正确,第二个是将信息提交到名字为“SimplePortlet”的Portlet中的checkIdcard方法中,远程验证身份证号码是否正确。两个验证器之间使用分号(;)分隔,当然,每个字段可以有多个验证器,他们顺序执行。例如:
<input type="text" name="username" bind="!empty:不允许为空;length(3,20):长度在3至20字符之间;!equals('Administrator'):不能是Administrator"/>
这样验证器会自动判断该字段是否为非空,如果不是,则弹出对话框;如果是,则检查长度是否在3-20字符之间,如果不是,则弹出对话框;如果是,则检查所输入的是否是“Administraotr”,如果是,则弹出对话框,否则验证通过。
这里有一个特殊的字符“!”,用来表示“非”判断,例如“!empty”就是非空,“!equals”就是不等于。
至此,美工的活儿就完事儿了,不是很难吧。
2.程序员角色
在CV架构中,程序员主要是做以下几件事情:
- 开发Portlet端的字段验证方法[*]开发验证器实现
2.1 开发Portlet端的字段验证方法
如果某些字段需要在服务器端进行验证,或者在表单提交时进行服务器端自动验证,那程序员需要开发Portlet端的字段验证方法,样例代码如下:
import('Validator');
class SimplePortlet{
public function checkIdcard(&$response, $value, $context = false){
if(Validator::validate('empty', $value, $context)){
$response->alert('请输入身份证号码');
return false;
}else if(!Validator::validate('idcard', $value, $context)){
$response->alert('无效身份证号码');
return false;
}
}
}
所有的Portlet端字段验证器名称都是以"check"开头,后面跟验证器名称。其参数分别为:控制器的回复对象、待验证的值、验证器上下文(在提交验证时,为$_POST数组;而在远程验证时,为NULL)。
Portlet端验证器的两种验证方式- 远端验证:即在表单字段的bind属性中指定验证器。[*]提交验证:当表单提交到服务器上时,CV会自动根据字段名称与验证器名称相匹配,如果该验证器存在,则进行验证。如果验证器不是返回false,则继续其他字段验证,否则,暂停处理。待到所有验证都通过时,才调用formXXXX方法来进行表单处理。
2.2 验证器实现的开发:
一个验证器实现,类名称必须为 cmspad_validator_<当前文件名>,必须有下面两个方法:
- validate($value,$context = null): 这是进行服务器端验证的方法。[*]getJavascript($v): 这是获取进行客户端验证所需的JavaScript脚本,是静态方法。
下面看看一个简单的验证器实现:
class cmspad_validator_chinese{
public function validate($value, $context = null){
return preg_match('/^[\u0391-\uFFE5]+$/', $value);
}
public static function getJavascript($value){
return "return /^[\u0391-\uFFE5]+$/.test($value);";
}
}
该代码保存在 inc/validators/chinese.php 文件中。
当在服务器端调用时,使用如下代码:
Validator::validate('chinese', $value, $context);
上面的Portlet字段验证代码中已经有使用样例了,这里就再说明了。
至此,CMSPAD验证器框架的大部分功能已经介绍完毕,学起来还算简单吧。
分享到:
相关推荐
使用简单,功能强大的表单验证插件。 1、验证插件支持正则表达式验证,函数验证,ajax异步验证,支持对比验证,并支持对表单的自定义属性或指定属性进行验证,应该足矣满足常用软件及网站开发需求。(可根据自己需求...
现包含用户名、密码、密码一致性、电话、身份证、简单的空值验证... 可以自己很轻松地添加正则验证和自定义验证函数,调用方法简单方便 现在分享出来给大家参考
一款简洁、实用且漂亮的Javascript表单验证效果,实现Ajax的功能,验证项目包括Email验证、日期验证、字符长度验证、常规验证等,程序基本思路:通过扩展对象来实现,将String扩展 将默认的表单元素扩展 定义两个...
jQuery formValidator表单验证插件,它是基于jQuery类库,实现了js脚本于页面html代码的分离。你可以划分多个校验组,每个组的校验都是互不影响。对一个表单对象,你只需要写一行代码就可以轻松实现无数种(理论上)...
表单中任意域加上emptyInfo属性将对此域是否为空进行验证(可以和最大长度验证\一般验证方式同时使用)。 无此属性视为此域允许空值。 如:字段不能为空!"> 3、最大长度验证(可以和空值验证、一般验证方式同时...
可扩展表单验证bootstrap-validate.js
超级容易扩展的android表单验证的小框架.比如,验证登陆模块的用户名和密码是否输入以及输入格式是否正确。验证内容自定义。 包含例子demo和使用说明doc
使layui.js form 可主动验证表单是否通过。扩展layui下的form.js 。文章链接 https://blog.csdn.net/qq_17837497/article/details/107505486
js表单验证控制代码大全 /* 目录: 1:js 字符串长度限制、判断字符长度 、js限制输入、限制不能输入、textarea 长度限制 2.:js判断汉字、判断是否汉字 、只能输入汉字 3:js判断是否输入英文、只能输入英文 4:js只能...
利用JS文件来优化网站表单验证和提交代码:通过Js文件来优化网站表单验证和提交代码,从而提高了代码的可重用性、简洁性、可读性和扩展性,提高了网站的开发效率。
表单的验证一直是Web开发头痛的问题,表单验证类 Validator就是为解决这个问题而写的,旨在使设计者从纷繁复杂的表单验证中解放出来,把精力集中于UI设计与业务逻辑上。 Validator早期版本是基于JavaScript技术的伪...
利用jQuery和Bootstrap编写的表单插件,可扩展
DREAMWEAVER扩展插件,傻瓜式操作验证表单。很实用的。
这是目前国内开发的所有JS表单验证框架中最好的一个。理由如下:1、简单,只有一个JS文件,不需要其它相关JS支持。2集成AJAX验证支持。3、验证类型全面。4、极易扩展。 主要功能有: PISX通用表单验证具有以下一些...
jQuery formValidator表单验证插件,它是基于jQuery类库,实现了js脚本于页面html代码的分离。你可以划分多个校验组,每个组的校验都是互不影响。对一个表单对象,你只需要写一行代码就可以轻松实现无数种(理论上)...
jQuery formValidator表单验证插件,它是基于jQuery类库,实现了js脚本于页面html代码的分离。你可以划分多个校验组,每个组的校验都是互不影响。对一个表单对象,你只需要写一行代码就可以轻松实现无数种(理论上)...
jquery表单验证插件制作多张提交表单验证,扩展容易,可提交ajax验证.
我们中国人写的验证框架,比struts验证框架简单,而且功能强大,容易扩展
jQuery formValidator表单验证插件,它是基于jQuery类库,实现了js脚本于页面html代码的分离。你可以划分多个校验组,每个组的校验都是互不影响。对一个表单对象,你只需要写一行代码就可以轻松实现无数种(理论上)...
表单的验证一直是Web开发头痛的问题,表单验证类 Validator就是为解决这个问题而写的,旨在使设计者从纷繁复杂的表单验证中解放出来,把精力集中于UI设计与业务逻辑上。 Validator早期版本是基于JavaScript技术的伪...