李炎恢ThinkPHP讲义ThinkPHP--自动验证[上][12]

控制层IndexController

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {

    public function index(){
        //$food = M(‘food‘);
        //两个表联合查询
        //var_dump($food->field(‘a.food_id,b.user_id‘)->table(‘__FOOD__ a, __PERSON__ b‘)->select());
        $food =D(‘Food‘);
        var_dump($food->sql_one()->sql_two()->select());
        $this->display();
    }

    //控制器create()方法自动调用验证
    //如果是直接 POST 过来的,直接使用 create()方法即可(假装下面是post过来的)
    public function login(){
    $person = D(‘Person‘);
    $data[‘name‘] = ‘11‘;
    $data[‘password‘] = ‘1‘;
    $data[‘repassword‘] = ‘2‘;
    if ($person->create($data)) {
        echo ‘所有数据验证成功!‘;
        } else {
        var_dump($person->getError());
        }

    }
}

PersonModel层

<?php
namespace Home\Model;
use Think\Model;

class PersonModel extends Model {
    //批量验证
    protected $patchValidate = true;
    //自动验证内容
    protected $_validate = array(
        array(‘name‘, ‘require‘, ‘用户名不得为空!‘, 0, ‘regex‘,3),
        //array(‘name‘, ‘email‘, ‘邮箱格式不正确!‘),
        //array(‘name‘, ‘url‘, ‘URL格式不合法!‘),
        //array(‘name‘, ‘currency‘, ‘货币格式不正确!‘),
        //array(‘name‘, ‘zip‘, ‘邮政编码必须是六位正整数!‘),
        //array(‘name‘, ‘number‘, ‘必须是正整数!‘),
        //array(‘name‘, ‘integer‘, ‘必须是整数!‘),
        //array(‘name‘, ‘double‘, ‘必须是浮点数!‘),
        //array(‘name‘, ‘english‘, ‘必须是纯英文!‘),
        //array(‘name‘, ‘/^\d{3,6}$/‘, ‘必须是3-6位纯数字‘, 0, ‘regex‘),
        //array(‘name‘, ‘李炎恢‘, ‘传递过来的值不相等‘, 0, ‘equal‘),
        //array(‘name‘, ‘李炎恢‘, ‘传递过来的必须不相等‘, 0, ‘notequal‘),
        array(‘repassword‘,‘password‘, ‘两个值不相等‘, 0, ‘confirm‘),
        array(‘name‘, ‘checkLength‘, ‘用户名必须在 3-5 位‘, 0, ‘callback‘, 3, array(3,5)),
    );

    //自定义验证方法
    protected function checkLength($str,$min,$max) {
        preg_match_all("/./", $str, $matches);
        $len = count($matches[0]);
        if ($len < $min || $len > $max) {
        return false;
        } else {
        return true;
        }
    }
    //将sql语句封装在模型定义类里
    protected $_scope =array(
        ‘sql_one‘=>array(
            ‘where‘=>array(‘food_id‘=>array(‘GT‘,3)),
        ),
        ‘sql_two‘=>array(
            ‘order‘=>array(‘unit_price‘=>‘DESC‘),
            ‘limit‘=>5,
        ),
    );
    //函数创建一个新的对象 PHP自带的函数
    public function __construct(){
        parent::__construct();
        var_dump(‘\Home‘);
    }

}
时间: 2024-11-08 09:52:36

李炎恢ThinkPHP讲义ThinkPHP--自动验证[上][12]的相关文章

Thinkphp 中的自动验证 上一篇有例子

说明,只要定义了Model,在任何地方调用,都会进行验证.很方便. 必须是D方法,才会有效.M方法不会触发自动验证. array( array(验证字段1,验证规则,错误提示,[验证条件,附加规则,验证时间]), array(验证字段2,验证规则,错误提示,[验证条件,附加规则,验证时间]), ..... ); 1.验证字段 需要验证的表单字段名称,这个字段不一定是数据库字段,也可以是表单的一些辅助字段,例如确认密码和验证码等等.有个别验证规则和字段无关的情况下,验证字段是可以随意设置的,例如e

ThinkPhp 3.2 自动验证

自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证. 数据验证有两种方式: 静态方式:在模型类里面通过$_validate属性定义验证规则. 动态方式:使用模型类的validate方法动态创建自动验证规则. 无论是什么方式,验证规则的定义是统一的规则,定义格式为: array( array(验证字段1,验证规则,错误提示,[验证条件,附加规则,验证时间]), array(验证字段2,验证规则,错误提示,[验证条件,附加规则,验证时间]

thinkPHP 表单自动验证功能

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

Thinkphp表单自动验证

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

ThinkPhP中model自动验证 $_validate $_auto

1 <?php 2 class UserModel extends RelationModel{ 3 4 5 /**自动验证**/ 6 protected $_validate = array( 7 /**array([验证字段],[验证规则],[错误提示],(验证条件(默认为存在字段就验证)),(附加规则),(验证时间))**/ 8 array('username','','该用户名已经存在!',1,'unique'), 9 array('password','5,12','密码过短,请重新输

ThinkPHP 表单自动验证运用

使用TP 3.2框架 public function add_post(){ //验证规则 $rule=array( array('name','require','请输入姓名',1),//必须验证name ); $m=M('user'); //获取name,sex,contact数据到模型,并验证 if(!$m->field('name,sex,contact')->validate($rule)->create()) $this->error($m->getError()

thinkphp自动验证无效的问题

新手入门thinkphp,试用自动验证表单输入数据功能,却发现怎么都不能调用自动验证,自动验证无效,原因竟是一个小细节的疏忽,学习一定要细心啊! Action方法: IndexAction下的adds方法,D(“Liuyan”)获取post提交过来的内容,create()方法创建数据对象,D方法创建了数据对象才可以自动调用验证. public function adds(){ $ly=D("liuyan"); $result=$ly->create(); if($result){

&lt;转&gt;thinkphp自动验证无效的问题

新手入门thinkphp,试用自动验证表单输入数据功能,却发现怎么都不能调用自动验证,自动验证无效,原因竟是一个小细节的疏忽,学习一定要细心啊! Action方法: IndexAction下的adds方法,D(“Liuyan”)获取post提交过来的内容,create()方法创建数据对象,D方法创建了数据对象才可以自动调用验证. public function adds(){ $ly=D("liuyan"); $result=$ly->create(); if($result){

李炎恢PHP培训视频教程

李炎恢老师倾心制作,史上最通俗易懂的PHP高端培训教程 课程讲师:李炎恢 适合人群:初级 课时数量:300+课时 用到技术:PHP&MySQL,Smarty模板引擎,PDO,PHP ShopEx框架,ThinkPHP 涉及项目:多用户留言版系统,CMS内容管理系统,大型在线商城系统,微博系统全程实录 咨询qq:1840215592 李炎恢老师倾心制作,史上最通俗易懂的PHP高端培训教程 100天用最快的方法掌握最高级的互联 四大阶段,13门课程,四大经典项目实战,PHP热门框架技术一网打尽网技术