Thinkphp3.2.3的自动验证中的function,没有执行到方法?

这是我写的代码,在自动验证是发现等级字段没有执行checkLevel这个方法,然后我查看了Tp的源码,发现function这段是空的,请问是tp源码的问题还是我写法上的问题?
clipboard.png

clipboard.png

tp源码
clipboard.png

阅读 2.2k
1 个回答

模型类

<?php
namespace Home\Model;

use Think\Model;

class AdminModel extends Model
{

    // 静态验证
    protected $_validate = array(
        array('username', 'require', '用户名不能为空!'),
        array('password', 'require', '密码不能为空!'),
        array('level', 'checkLevel', '等级数据错误!', 0, 'callback'),
        array('email', 'email', '无效的邮箱格式'),
    );


    public function checkLevel($level)
    {
        if ($level)
        {
            return true;
        }
        return false;
    }
}

控制器类

<?php

namespace Home\Controller;

use Think\Controller;

class AdminController extends Controller
{

    public function addData()
    {
        $data = [
            'username' => 'xiaoming',
            'password' => 'root',
            'email'    => 'test@1.com',
            'level'    => '',
        ];

        $admin = D('Admin');

        if ($admin->create($data))
        {
            echo '数据验证成功';
        }
        else
        {
            dump($admin->getError());
        }
    }
}

结果返回

string(21) "等级数据错误!"

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题