鍍金池/ 問答/PHP/ Thinkphp3.2.3的自動驗證中的function,沒有執(zhí)行到方法?

Thinkphp3.2.3的自動驗證中的function,沒有執(zhí)行到方法?

這是我寫的代碼,在自動驗證是發(fā)現(xiàn)等級字段沒有執(zhí)行checkLevel這個方法,然后我查看了Tp的源碼,發(fā)現(xiàn)function這段是空的,請問是tp源碼的問題還是我寫法上的問題?
clipboard.png

clipboard.png

tp源碼
clipboard.png

回答
編輯回答
舊時光

模型類

<?php
namespace Home\Model;

use Think\Model;

class AdminModel extends Model
{

    // 靜態(tài)驗證
    protected $_validate = array(
        array('username', 'require', '用戶名不能為空!'),
        array('password', 'require', '密碼不能為空!'),
        array('level', 'checkLevel', '等級數(shù)據(jù)錯誤!', 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 '數(shù)據(jù)驗證成功';
        }
        else
        {
            dump($admin->getError());
        }
    }
}

結(jié)果返回

string(21) "等級數(shù)據(jù)錯誤!"

2017年5月23日 07:21