tp5验证器怎么调用
来源:4-7 工欲善其事必先利器:构建接口参数校验层
sxfenglei
2017-05-04
创建了一个用户验证器
<?php
namespace app\common\validate;
use think\Validate;
class User extends Validate
{
protected $rule = [
'email|邮箱'=>'email|unique:email',
'pass|密码'=>'require|min:6',
'phone|手机号'=>'regex:^1\d{10}|unique:phone',
];
protected $message = [
'email.email'=>'邮箱格式有误',
'email.unique'=>'邮箱已存在',
'pass'=>'密码只是6位',
'phone.regex'=>'手机号码格式有误',
'phone.unique'=>'手机号码已存在',
];
protected $scene = [
//登录
'signin'=>['email'=>'email','pass'=>'require|min:6'],
];
}然后在控制器中调用User验证器中的signin进行验证
<?php
namespace app\index\controller;
use think\Controller;
use think\Request;
use app\common\validate\User as UserValidate;
use think\Log;
use app\common\model\User as UserModel;
class Login extends Controller
{
public function login()
{
if(Request::instance()->isAjax()){
$data = [
'email'=>Request::instance()->param('account'),
'pass'=>Request::instance()->param('password')
];
$validate = new UserValidate();
Log::log($validate->scene('User.signin')->check($data));
if(!$validate->scene('User.signin')->check($data)){
dump($validate->getError());
}
}
}然后前端通过jquery 的$.post调用 报错了 为啥把要验证的email字段变成了表名fl_email这表是不存在的因为要验证的是user表的email字段
[42S02]SQLSTATE[42S02]: Base table or view not found: 1146 Table 'fldatabase.fl_email' doesn't exist[E:\phpStudy\WWW\thinkphp\library\think\db\connector\Mysql.php:65]
写回答
2回答
-
7七月
2017-05-04
你没有看 视频课程吗。视频课程可是一步步的 将验证器怎么用 演示出来了啊。
00 -
7七月
2017-05-04
您这个表述有些混乱。到底是什么问题?从错误异常看,你触发了一个SQL语句,这个语句不正确,fldatabase.fl_email,你是不是设置了什么数据表前缀?还有就是验证器和数据表又有什么关系呢?
012017-05-04
相似问题