Thinkphp5学习(17)输入和验证

来源:互联网 发布:淘宝爱奇艺会员不见了 编辑:程序博客网 时间:2024/04/27 23:40

学习内容:
视频教程:
https://www.kancloud.cn/tpshop/thinkphp5/228860
完全开发手册:https://www.kancloud.cn/manual/thinkphp5/129352
教程中的代码:https://github.com/phpervip/tp5a

TP5输入和验证
1.表单提交
2.表单验证
3.错误提示
4.自定义验证规则
5.控制器验证
演示:
创建控制器 创建视图
创建验证器

图1这里写图片描述

图2
这里写图片描述
form表单提交
Controller
1.自动收集数据input(‘post.’)
2.自动检测字段allField(true)
3.自动校验正确性validate(true),User验证器配置各个字段验证规则

永远不要相信用户的数据,所以现在给表单提交沽加数据验证

创建验证器

关于生日,
提交时,填写日期格式:2001-01-01,
入库时,是,int(10)
显示时,是,2001-01-01,

model中:

<?php// application/index/model/User.phpnamespace app\index\model;use think\Model;class User extends Model{    // 定义类型转换,这样就不用读取器,修改器    // protected $dataFormat = 'Y/m/d';    protected $type=array(        'reg_time'=>'timestamp:Y-m-d',        'nickname'=>'serialize',        'birthday'=>'timestamp:Y-m-d'    );    // 定义自动完成的属性    protected $insert = ['status'=>1];    //protected $update = ['status'=>1];    // 还可以结合修改器来指定自动完成    protected function setSexAttr($value,$data){        return $data['head_pic']=='boy.jpg'?1:0;    }    // 自动完成 insert update auto    protected $update = array(        'sex' =>0    );    public function getRegTimeAttr($value,$data){        return date('Y-m-d',$value).$data['nickname'];    }    public function setRegTimeAttr($value){        return strtotime($value);    }}

validate 中。

<?php// application/index/validate/User.phpnamespace app\index\validate;use think\Validate;class User extends Validate{    // 验证规则    protected $rule = [        ['nickname','require|min:5','昵称必须|昵称不能短于5个字符'],        ['email','email','邮箱格式错误'],        ['birthday','dateFormat:Y-m-d','生日格式错误']    ];}
<?php// application/index/controller/User.phpnamespace app\index\controller;use think\Controller;use app\index\model\User as mUser;class User extends Controller{    // 创建用户数据页面    public function create(){        return view();    }    // 新增用户数据    public function add_0(){        // 自动收集表单数据 input('post.')        // 自动排除不相关字段        // 自动校验非法字段        // 自动生成insert 语句 执行入库        $user =  new mUser;        if($user->allowField(true)->validate(true)->save(input('post.'))){            return '用户['.$user->nickname.':'.$user->id .']新增成功';        }else{            return $user->getError();        }    }    // 单独验证某字段    public function add(){        $data = input('post.');        // 验证birthday 是否是有效的日期        $check = Validate::is($data['birthday'],'date');        if(false===$check){            return 'birthday日期格式非法';        }        // 因为Controller名是User,避免重复model取别名为mUser        $user = new mUser;        // 数据保存        $user->allowField(true)->save($data);        return '用户['.$user->nickname.':'.$user->id.']新增成功';    }}
原创粉丝点击