【发布时间】:2016-11-15 18:07:06
【问题描述】:
这可能是一个微不足道的问题,但我想不通。
我希望我的 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 列),所以我想这就是decimal('price', 2) 不起作用的原因。
有什么想法吗?
请求编辑:
整个validationDefault方法:
public function validationDefault(Validator $validator)
{
//$validator for other columns
$validator
->allowEmpty('price')
->add('price', 'money', array('rule' =>
array('money', 'left'),
'message' => 'Please supply a valid monetary amount.'));
return $validator;
}
我的输入字段是使用 HTML 帮助器创建的。
【问题讨论】:
标签: php validation cakephp cakephp-3.0