ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

THINKPHP5验证的使用(表单验证等)

2019-04-21 13:53:46  阅读:789  来源: 互联网

标签:name 验证 THINKPHP5 表单 input validate data email


鉴于之前博客中一直都没有验证器这块的教程,而且偶然发现用的东西还比较多,所以这里我们就直接写一篇教程,带大家领悟下TP5中验证器的使用(当然这个东西会了,laravel下的使用时差不多的方式,下面我们就开始今天的验证器。

首次我们先使用独立验证(即不需要在模块目录下创建验证文件夹,如下:

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/9/27 0027
 * Time: 00:50
 */

namespace app\index\controller;


use think\Controller;
use think\Validate;

class User extends Controller
{

    /**
     * 验证器中的独立验证使用
     * 独立验证实际上的意思就是说,你单独拿出来使用,不用在模块目录下创建验证目录
     * 官方手册中说 任何时候,都可以使用Validate类进行独立的验证操作
     * 这里我的理解是,只要引用了这个类,那么大家都可以在控制层或者模型层使用它。
     */


    /**
     * 所以第一步我们需要在命名空间namespace 下面引入验证类Validate
     * 下面我新建一个公共的方法index 并使用独立验证
     */

    public function index(){


        return $this->fetch();
    }

    public function infomation(){
        /**
         * 实例化验证类
         * 传入一个数组
         *
         * 键-值 require的意思是必填的意思,
         * max的意思为最长只能为25个长度
         * 想要添加多个验证条件数线( | )分隔即可
         *
         * 内置了email验证格式,所以直接 email验证条件即可
         */

        $validate=new Validate(
            [
                'name'=>'require|max:25',
                'email'=>'email',

            ]
        );

        /**
         * 接收到的数据,比如是form表单提交的
         * 或者ajax提交的数据,官方手册中 是直接赋予了值,
         * 获取接收到的值,你可以使用input()方法或者request()方法亦可
         * 像下面这样
         */

        $data=[
            'name'=>input('post.name'),
            'email'=>input('post.email'),
        ];

        /**
         * 判断验证结果
         * 验证结果可以直接调用check()方法
         *
         * 下面的意思是如果验证失败
         * 打印错误信息 获取错误信息可以直接实例验证类调用getError()方法即可
         */
        
        if(!$validate->check($data)){
            dump($validate->getError());
        }else{
            return "验证成功";
        }


    }

}

视图层代码(View层):

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>主页</title>
    <script type="application/javascript" src="__JS__/jquery.js"></script>
    <link rel="stylesheet" type="text/css" href="__STATIC__/bootstrap/css/bootstrap.min.css"/>
    <script type="application/javascript" src="__STATIC__/bootstrap/js/bootstrap.min.js"></script>
    <script type="application/javascript" src="__STATIC__/vue/vue.js"></script>

</head>
<body>
    <h1>validate</h1>
    <form action="{:url('index/User/infomation')}" method="post">
        <input type="text" name="name" placeholder="name">
        <input type="text" name="email" placeholder="email">
        <input type="submit" value="提交">
    </form>
</body>
</html>

 

默认第一次的页面是这样子的,如下图:

 

然后我们在input框中输入name值和email值 :

我们先不输入name值,邮箱输入正确的格式会出现如下的样子:

当然这里如果我们填入正确的格式值,页面会返回我们验证成功的字样(这里的验证字段信息是我在控制层直接return的),像这样子的页面,当然在实际生产环境中你们可以直接重定向到指定的页面下。

下面我们使用验证器方式:

首先我们需要在模块目录下创建validate目录,然后在此目录下创建验证器文件

下面是验证层验证器的代码:

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/9/27 0027
 * Time: 01:59
 */

namespace app\index\validate;


use think\Validate;

class User extends Validate
{
    /**
     * 继承验证器类 think\Validate
     */

    /**
     * 定义受保护的属性 $rule 为一个数组格式(也就是验证规则信息)
     * 注意属性变量名称这里一定更要一致哦 
     * 像下面这样我们就定义好了一个最简单的验证器
     * 然后我们在需要的地方去调用这个验证器 User,比如控制层Controller
     */

    protected $rule=[
        'name'=>'require|max:25',
        'email'=>'email',
    ];


}

 

下面是视图层(View层)代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>主页</title>
    <script type="application/javascript" src="__JS__/jquery.js"></script>
    <link rel="stylesheet" type="text/css" href="__STATIC__/bootstrap/css/bootstrap.min.css"/>
    <script type="application/javascript" src="__STATIC__/bootstrap/js/bootstrap.min.js"></script>
    <script type="application/javascript" src="__STATIC__/vue/vue.js"></script>

</head>
<body>
    <h1>validate</h1>
    <form action="{:url('index/User/lists')}" method="post">
        <input type="text" name="name" placeholder="name">
        <input type="text" name="email" placeholder="email">
        <input type="submit" value="提交">
    </form>
</body>
</html>

这里只是简单了修改了我们form表单提交的action地址。

下面是控制层(Controller层)代码 :

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/9/27 0027
 * Time: 00:50
 */

namespace app\index\controller;


use think\Controller;
use think\Loader;
use think\Validate;

class User extends Controller
{

    /**
     * 验证器中的独立验证使用
     * 独立验证实际上的意思就是说,你单独拿出来使用,不用在模块目录下创建验证目录
     * 官方手册中说 任何时候,都可以使用Validate类进行独立的验证操作
     * 这里我的理解是,只要引用了这个类,那么大家都可以在控制层或者模型层使用它。
     */


    /**
     * 所以第一步我们需要在命名空间namespace 下面引入验证类Validate
     * 下面我新建一个公共的方法index 并使用独立验证
     */

    public function index(){


        return $this->fetch();
    }

    public function infomation(){
        /**
         * 实例化验证类
         * 传入一个数组
         *
         * 键-值 require的意思是必填的意思,
         * max的意思为最长只能为25个长度
         * 想要添加多个验证条件数线( | )分隔即可
         *
         * 内置了email验证格式,所以直接 email验证条件即可
         */

        $validate=new Validate(
            [
                'name'=>'require|max:25',
                'email'=>'email',

            ]
        );

        /**
         * 接收到的数据,比如是form表单提交的
         * 或者ajax提交的数据,官方手册中 是直接赋予了值,
         * 获取接收到的值,你可以使用input()方法或者request()方法亦可
         * 像下面这样
         */

        $data=[
            'name'=>input('post.name'),
            'email'=>input('post.email'),
        ];

        /**
         * 判断验证结果
         * 验证结果可以直接调用check()方法
         *
         * 下面的意思是如果验证失败
         * 打印错误信息 获取错误信息可以直接实例验证类调用getError()方法即可
         */

        if(!$validate->check($data)){
            dump($validate->getError());
        }else{
            return "验证成功";
        }

    }


    public function lists(){
        /**
         * 创建一个lists方法
         *  $data为验证的数据 为一个数组
         */

        $data = [
            'name'=>input('post.name'),
            'email'=>input('post.email')
        ];

        /**
         * 静态调用实例中的验证器方法
         */

        $validate = Loader::validate('User');

        /**
         * 或者也可以使用助手函数 validate()函数
         * 任意选择一个即可
         */

//        $validate = validate('User');

        /**
         * 同样是调用验证方法check方法
         * 判断验证结果
         * getError()返回错误信息
         */

        if(!$validate->check($data)){
            dump($validate->getError());
        }else{
            return "验证成功";
        }
    }

}

下面我试一试效果,图如下:

下面是验证成功的样子:

 

这里独立验证和验证器的使用,剩余的部分大家参照手册即可明白剩余的操作及含义了,如果还有不太明白的地方大家可以在下方留言给我,我收到第一时间回复,最后最近重看无间道3中有这么一句话送给大家:

地藏菩萨本原经卷上: 如是等辈,当堕无间地狱,千万意劫,以此连绵,求无出期。

晚安

 

标签:name,验证,THINKPHP5,表单,input,validate,data,email
来源: https://blog.csdn.net/qq_39338006/article/details/82861471

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有