## 创建验证器
~~~
$php think make:validate test@User
~~~
一个完整的验证器代码包含`$rule`、`$message`、`$scene`,如下:
~~~
<?php
namespace app\admin\validate;
use think\Validate;
class User extends Validate{
// 校验规则
protected $rule = [
'name'=>'require',
'__token__'=>'require|token'
];
// 校验规则
protected $message = [
'code.require'=>'请输入代码',
'__token__.require'=>'验证码必须输入',
'__token__.token'=>'请不要重复提交'
];
// 场景设置
protected $scene = [
'add' => ['code','__token__'],
'edit' => ['code','__token__']
];
}
~~~
在控制器中验证如下。
~~~
<?php
declare (strict_types = 1);
namespace app\test\controller;
use think\Request;
use app\test\validate\UsersValidate;
use think\exception\ValidateException;
// use think\facade\Validate;
class User
{
public function index()
{
$data = ['name' => 'admin',
'email' => 'thinkphp@qq.com',];
try {
// 成功验证后,$ret 为 true
$ret = validate(UsersValidate::class)->batch(true)->check($data);
} catch (ValidateException $e) {
dump($e->getError());
}
}
......
~~~
一个完整的验证器代码如下:
~~~
<?php
declare (strict_types = 1);
namespace app\test\validate;
use think\Validate;
use app\test\model\Users;
class UsersValidate extends Validate
{
/**
* 定义验证规则
* 格式:'字段名' => ['规则1','规则2'...]
*
* @var array
*/
protected $rule = [
// 'name'=>['require',"unique:users"] ,//unique 会自动把 当前的记录排除掉
// 'name'=>['require',"unique:users,name,1,id"] ,
'name|用户名' => 'available_name:admin|require',
'email' => 'email',
];
/**
* 定义错误信息
* 格式:'字段名.规则名' => '错误信息'
*
* @var array
*/
protected $message = [
'name.require' => '名字是必须的',
'name.available_name' => '该用户名不可用',
];
protected $scene = [
'add' => ['name'],
'edit' => ['email'],
];
// 自定义验证规则
public function available_name($value, $rule, $data=[])
{
// 保留用户名
if ($rule == $rule) return false;
// 已存在用户,返回 false,即不通过验证
$user = Users::where('name', '=', $value)->find();
return $user === null ? true : false;
}
}
~~~
- 搭建ThinkPHP6的开发环境
- 配置ThinkPHP6
- 必要的基础知识(basic)
- MVC开发模式
- 控制器(controller)
- 数据库(database)
- 模型(model)
- 模型关联(relation)
- 视图(view)
- Session
- Cookie
- 缓存(cache)
- 上传(upload)
- 验证器(validate)
- 验证码(captcha)
- 命令行(command)
- 服务器部署(deploy)
- 数据备份(backup)
- 数据同步(synchronization)
- 订阅服务(subscribe)
- PHP 易混淆知识点
- 助手函数
- MySQL规范
- Redis 规范
- office插件 phpoffice
- 拼音插件 pinyin
- 日期插件 datetime
- 消息插件 amqp
- 产品部署环境的搭建
- PDF 等杂项处理
- 文件上传
- 常用扩展
- flc/dysms
- 使用示例 ①
- 使用示例 ②
- qiniu/php-sdk
- 简介
- 使用示例
- 使用示例 2 ②
- liliuwei/thinkphp-jump
- 扩展介绍
- 下载扩展
- 使用方法
- topthink/think-captcha
- 安装扩展
- 验证码显示
- 更换验证码
- 验证码校验
- 验证码配置
- 自定义验证码
- phpoffice/phpspreadsheet
- 数据写入表格
- 读取表格数据
- topthink/think-queue
- 安装
- 自定义函数
- 任务类
- 带有日志的任务类