2016/05/15 ThinkPHP3.2.2 表单自动验证实例 验证规则的数组 直接写在相应的控制器里

使用TP 3.2框架

验证规则也可以写到模型里,但感觉有些麻烦,

一是有时候不同页面验证的方式会不一样,

二是看到这个   Add  事件里的代码,就清楚要接收什么数据,如何验证数据能够在第一眼有个大致了解

①控制器代码页

 1 <?php
 2 namespace Home\Controller;
 3 use Think\Controller;
 4
 5 header("Content-type: text/html; charset=utf-8");
 6
 7 class AddController extends Controller{
 8
 9 public function Add()
10             {
11
12         $rule=array(    //自动验证的规则数组
13          array(‘Ids‘,‘require‘,‘编号不能为空‘),
14          array(‘Name‘,‘require‘,‘用户名不能为空‘),
15          array(‘Price‘,‘require‘,‘价格不能为空‘),
16          array(‘Source‘,‘require‘,‘产地不能为空‘),
17          );
18                 $m=D(‘fruit‘);
19                 if (empty($_POST)) {
20                     $this->display();
21                 }
22
23                 else{
24
25                 $z=$m->field(‘Ids,Name,Price,Source‘)->validate($rule)->create();//create方法调用数组中的规则进行验证
26
27                 // $m->Ids=$_POST[‘ids‘];
28                 // $m->Name=$_POST[‘name‘];
29                 // $m->Price=$_POST[‘price‘];
30                 // $m->Source=$_POST[‘source‘];
31                 //->field(‘Ids,Name,Price,Source‘)
32                 //var_dump($z);
33
34                 if ($z) {
35                     $m->add();
36                     //$this->success(‘数据添加成功‘,‘User/User‘);
37                     $this->redirect(‘User/User‘);
38                 }
39                 else
40                 {
41                     //$this->error(‘数据添加失败‘);
42                     echo $m->getError();
43                 }
44
45
46         }
47
48         }
49
50
51
52
53 }

② 模板显示页面

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>添加</title>
 6 </head>
 7 <body>
 8
 9 <div align="center" style="margin-top:30px; ">
10 <h1>添加页面</h1>
11     <form action="/tp/index.php/Home/Add/Add" method="post">
12         编号:<input type="text" name="Ids"><br><br>
13         名称:<input type="text" name="Name"><br><br>
14         价格:<input type="text" name="Price"><br><br>
15         产地:<input type="text" name="Source"><br><br>
16           <input type="submit" value="点击添加"></input>  <input type="reset" value="重置"></input>
17     </form>
18
19 </div>
20 </body>
21 </html>

网络搜集到的相同方法的案例:

 1 public function anyvalidate(){
 2
 3         //验证规则
 4
 5         $rule=array(
 6
 7             array(‘name‘,‘require‘,‘请输入姓名‘,1),//必须验证name
 8
 9         );
10
11
12
13         $m=M(‘user‘);
14
15
16
17         //获取name,sex,contact数据到模型,并验证
18
19         if(!$m->field(‘name,sex,contact‘)->validate($rule)->create())
20
21             $this->error($m->getError());
22
23
24
25         $result=$m->add();
26
27
28
29         if(!$result)
30
31             $this->error(‘添加失败‘);
32
33
34
35         $this->success(‘添加成功‘,U(‘dir‘));
36
37     }
时间: 2024-12-27 23:54:49

2016/05/15 ThinkPHP3.2.2 表单自动验证实例 验证规则的数组 直接写在相应的控制器里的相关文章

Thinkphp表单自动验证

之前项目经常用到,没做总结. 自动验证是Thinphp模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证. 原理: create()方法收集表单($_POST)信息并返回,同时触发表单自动验证,过滤非法字段, 在控制器中使用create()方法,(返回值为true/false),会自动触发模型类中的$_validate属性(为父类Model中的方法,在子类Model中重写),在$_validate中自定义验证规则(验证规则下面会详细说明),当create()方

thinkPHP 表单自动验证功能

昨天晚上我们老大叫我弄表单自动验证功能,愁了半天借鉴了好多官网的知识,才出来,诶,总之分享一下我自己的成果吧! thinkphp 在Model基类为我们定义了自动验证的函数和正则表达式,我们只需要在对应的数据库表的模型类下建立$_validate属性就可以了. 1.我们找到Model基类,可以看到 protected $_validate       = array();  // 自动验证定,它是数组类型的,下面在对应数据模型文件定义它: 2. public function CheckVeri

AngularJS实现表单手动验证和表单自动验证

AngularJS的表单验证大致有两种,一种是手动验证,一种是自动验证.一.手动验证 所谓手动验证是通过AngularJS表单的属性来验证.而成为AngularJS表单必须满足两个条件: 1.给form元素加上novalidate="novalidate": 2.给form元素加上name="theForm",如下: <!DOCTYPE html> <html lang="en" ng-app="myApp1"

EasyUI中在表单提交之前进行验证

使用EasyUi我们可以在客户端表单提交之前进行验证,过程如下:只需在onSubmit的时候使用return  $("#form1").form('validate')方法即可,EasyUi中form模块中的from('validate')方法会自行对我们指定的表单中required=true等需要验证的的元素进行验证,但有不通过的元素时返回一个false; 1    $("#form1").form({ 2                 url: 'login.

使用jquery实现的清空表单元素代码实例

使用jquery实现的清空表单元素代码实例:如果表单的元素较多的话,如果想情况以前填写的内容可能有点耗费体力,不够人性化,下面就介绍一下如何利用jquery代码实现快捷清除表单元素内容的功能,先看一段代码实例: $('#theform')[0].reset(); 很朋友可能认为上面的代码就完全实现我们的要求,其实这是错误的,reset()函数是重置的意思,也就是将表单元素的值重置为默认值而不是清空,如下面的文本框: <input type="text" value="蚂

chrome表单自动填充导致input文本框背景变成偏黄色问题解决

chrome表单自动填充导致input文本框背景变成偏黄色问题解决 作者:佚名 字体:[增加 减小] 来源:互联网 时间:08-21 18:43:32我要评论 chrome表单自动填充后,input文本框的背景会变成偏黄色的,想必大家都会碰到这种情况吧,这是由于chrome会默认给自动填充的input表单加上input:-webkit-autofill私有属性造成的,解决方法如下,感兴趣的朋友可以了解下 chrome表单自动填充后,input文本框的背景会变成偏黄色的,这是由于chrome会默认

chrome表单自动填充去掉input黄色背景解决方案

chrome表单自动填充后,input文本框的背景会变成偏黄色的,这是由于chrome会默认给自动填充的input表单加上input:-webkit-autofill私有属性,然后对其赋予以下样式: input:-webkit-autofill { background-color: #FAFFBD; background-image: none; color: #000; } 在有些情况下,这个黄色的背景会影响到我们界面的效果,尤其是在我们给input文本框使用图片背景的时候,原来的圆角和边框

表单自动提交问题整理

表单自动提交问题 问题描述 二是利用了浏览器的默认行为(至少发现ie是这样的).浏览器在解析网页的时候,有许多默认的行为,例如: * 如果一个页面上有表单和一个提交按钮,那么打开页面时,焦点会自动落在这个提交按钮上面. * 同样如果一个表单中只有一个单行文本输入域(text),那么在这个输入域中按Enter键时,浏览器会自动提交该表单. 我们对于第一种情况一般都知道而且很容易理解,但是对于第二种浏览器的默认行为,可能知道这一点的人就比较少了,下面我具体看一下浏览器(至少ie如此)在表单提交上的默

Extjs的form表单自动装载数据(通过Ext.data.Model的代理加载数据)

在做项目的时候遇到一个问题,以前双击grid页面一行数据的时候,会吧双击这一行的数据自动加载到双击的页面(Ext的弹出框),可以通过this.down(''form).getForm().loadRecord(record)来自动加载,可是现在有一个需求就是双击grid一行弹出一个新的浏览器页面(不是ext的弹出框,通过window.open()实现),只能把双击的id传到页面,再重新查数据手动赋值,如果一个页面字段很多,一个一个赋值是很辛苦的,所以就想能不能自动装载数据 通过长时间研究发现,t