我正在尝试使用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
}
}
答案 0 :(得分:3)
最终,您的验证规则消息将传递到vsprintf()
(__d()
),因此必须将其格式化为sprintf
兼容。
问题是您传递的是%
,它是转换说明符标识符,因此vsprintf()
希望您适当地传递其他参数。
长话短说,用另一个%
逃避%
:
'message' => 'Sales tax must be a percentage (Ex: 4.005%%)'