牛骨文教育服务平台(让学习变的简单)
博文笔记

Thinkphp5学习(17)输入和验证

创建时间:2017-06-11 投稿人: 浏览次数:1004

学习内容:
视频教程:
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.php

namespace appindexmodel;
use thinkModel;

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.php

namespace appindexvalidate;
use thinkValidate;



class User extends Validate
{
    // 验证规则
    protected $rule = [
        ["nickname","require|min:5","昵称必须|昵称不能短于5个字符"],
        ["email","email","邮箱格式错误"],
        ["birthday","dateFormat:Y-m-d","生日格式错误"]
    ];
}
<?php
// application/index/controller/User.php

namespace appindexcontroller;
use thinkController;
use appindexmodelUser 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."]新增成功";

    }
}
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。