常用的验证:
<?php namespace Home\Model; use Think\Model; class NationModel extends Model{ /*protected $_validate=array( //静态验证--写死的 array("code","require","代号不能为空",0,"regex",3), array("name","","姓名不能重复",0,"unique",3), //array("name","nation","两次输入的内容不一致",0,"confirm",3), //array("nation","123","输入的内容不正确","0","equal",3) //array("nation","18,50","输入的年龄要在18-50之间",0,"between",3) array("nation","email","输入的邮箱格式不正确",0,"regex",3) );*/ }
静态验证(在模型里写死的,直接用):
静态定义方式因为必须定义模型类,所以只能用D函数实例化模型
动态验证(比较灵活,哪里用到哪里写):
//写出规则
$rules=array( array("code","require","代号不能为空",0,"regex",3))
//调用验证
if(!$m->validate($rules)->create()) { //验证失败 echo $m->getError(); } else { //验证通过 echo "验证通过"; }
动态验证不依赖模型类的定义,所以通常用M函数实例化模型就可以
实例:
要求:实现类似注册失去焦点时,验证用户名的功能
静态页面:
<body> <form action="__ACTION__" method="post"> 代号:<input id="dh" type="text" name="code" /> <span id="cc"></span> <input type="submit" value="注册" /> </form>
</body>
<script type="text/javascript"> $(document).ready(function(e) { //动态验证 $("#dh").blur(function(){ var code=$(this).val(); $.ajax({ url:"__CONTROLLER__/bb", data:{code:code}, type:"POST", dataType:"TEXT", success: function(data){ if(data.trim() == "输入正确") { $("#cc").html(data); $("#cc").css("color","#0F0"); } else { $("#cc").html(data); $("#cc").css("color","#F00"); } } }) }) }); </script>
控制器:
function bb(){//一个方法,两个逻辑
if(empty($_POST)){$this->display();//显示功能}
else{ //实现验证功能 $m=D("nation"); $rules=array(array("code","require","代号不能为空",0,"regex",3)); if(!$m->validate($rules)->create()) { //验证失败 $str=$m->getError(); $this->ajaxReturn($str,"eval"); } else { $str="输入正确"; $this->ajaxReturn($str,"eval"); } }
}
No Excuse~