thinkphp5.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。所以感觉验证器类的引入没问题了。
但是,为什么最后结果还是验证不通过呢?

阅读 2.1k
1 个回答

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

if (!$validate->check($formData)) {
      return '新增失败:' . $validate->getError();
    } else {
      $Teacher->save($formData);
      return $this->success('添加成功!', url('index'));
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进