CakePHP验证错误

时间:2013-12-26 21:20:47

标签: validation cakephp

我正在尝试使用CakePHP 2.3.8验证输入。当输入通过验证时,它工作正常。但是,当它不符合验证要求时,我会收到以下错误

Warning (2): vsprintf(): Too few arguments [CORE/Cake/basics.php, line 619]

显示在顶部。在应该显示消息的输入周围,它只是一个空白的红色轮廓,就像消息没有通过一样。

这是我的验证

'sales_tax' => array(
        'valid' => array(
            'rule' => array('confirm_percentage'),
            'message' => 'Sales tax must be a percentage (Ex: 4.005%)'
        )
),

我在没有'有效'数组的情况下尝试了这个,但错误仍然存​​在。和功能

function confirm_percentage($value){
    if(preg_match('/^[0-9]/', $value['sales_tax'])){ //just checking if input starts with number for testing purposes
        return true; //no error
    }
}

1 个答案:

答案 0 :(得分:3)

最终,您的验证规则消息将传递到vsprintf()__d()),因此必须将其格式化为sprintf兼容。

问题是您传递的是%,它是转换说明符标识符,因此vsprintf()希望您适当地传递其他参数。

长话短说,用另一个%逃避%

'message' => 'Sales tax must be a percentage (Ex: 4.005%%)'