这可能是一个微不足道的问题,但我无法弄清楚。
我希望我的price
值有2位小数。 CakePHP应该验证这一点,但事实并非如此。 CakePHP仅检查输入是否为数字,并且不允许传递十进制值。
我希望它检查并传递2.22
等值以及2
。现在它只允许后者。
validationDefault
方法的一部分:
$validator
->decimal('price')
->allowEmpty('price');
我检查了CakePHP API并找到了decimal()
方法说明:
decimal( float $check , integer|null $places null , string|null $regex null )
检查值是否为有效小数。符号和指数都是 可选的。
但它不会在此上下文中将string
作为参数(并且CakePHP会在烘焙期间自动将decimal()
分配给我的price
列),所以我想这就是为什么{{1不起作用。
有什么想法吗?
请求编辑:
整个decimal('price', 2)
方法:
validationDefault
我的输入字段是使用HTML帮助程序创建的。
答案 0 :(得分:1)
您应该用钱来验证价格
$validator->notEmpty('price',array('message' => 'Please provide your amount'))
->add('price', 'money', array('rule' => array('money','left'),
'message' => 'Please supply a valid monetary amount.'));
您也可以尝试
$validator->notEmpty('amount',array('message' => 'Please provide your amount'))
->add('amount','numeric',array('rule' => 'numeric' ,'message'=> 'Please provide a valid amount'));