Thinkphp5学习(17)输入和验证

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

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

namespace 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.']新增成功';

    }
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值