thinkphp5.0版本自定义验证器正确的也报错?

发布于 2022-09-12 02:24:59 字数 1996 浏览 22 评论 0

题目描述

开始学习tp框架,照着

https://www.kancloud.cn/yunzh...

这里的代码去模仿着写,没有完全照抄。参考了5.0的完全手册,创建了
app\common\validate\Teacher.php 验证类:

namespace app\common\validate;
use think\Validate;
class Teacher extends Validate
{
  protected $rule = [
    'name' => 'required',
    'username' => 'required',
    'email' => 'email',
  ];
  protected $message = [
    'name' => '姓名必须写aaaaa',
    'username' => '用户名必须写bbbbb',
    'email' => '邮箱格式不对ccccc',
  ];
}

然后在控制器app\index\controller\TeacherController.php

里面添加了插入数据的方法:

public function insert()
  {
    //接收表单提交的数据
    $formData = Request::instance()->param();
   // var_dump($formData);
   // return;
    // 实例化模型
    $Teacher = new Teacher;
    $Teacher->name =  $formData['name'];
    $Teacher->username =  $formData['username'];
    $Teacher->sex =  $formData['sex'];
    $Teacher->email =  $formData['email'];
    $Teacher->create_time =  $formData['create_time'];
    // var_dump($Teacher);
    // return;
    // 验证一下数据
    // 加载验证器 
    $validate = Loader::validate('common/Teacher');
    if (!$validate->check($Teacher)) {
      return '新增失败:' . $validate->getError();
    } else {
      $Teacher->save($formData);
      return $this->success('添加成功!', url('index'));
    }
  }

然后在添加界面:
QQ截图20200427160628.png

点击添加之后,报错:

新增失败:姓名必须写aaaaa

这里有两个疑问:

  1. 查看了资料 Loader::validate后面大部分都跟随的是和控制器在同一个模块下的验证器类,我这里用的是common模块的,所以尝试几次之后:Loader::validate('common/validate/Teacher')

Loader::validate('common/Teacher')发现后面的不报这个错误:类不存在:app\common\validate\validate\Teacher。所以感觉验证器类的引入没问题了。
但是,为什么最后结果还是验证不通过呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我只土不豪 2022-09-19 02:24:59

https://www.kancloud.cn/manua...

if (!$validate->check($formData)) {
      return '新增失败:' . $validate->getError();
    } else {
      $Teacher->save($formData);
      return $this->success('添加成功!', url('index'));
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文