CakePHP3:验证十进制输入

时间:2016-07-13 08:47:51

标签: php validation cakephp cakephp-3.0

这可能是一个微不足道的问题,但我无法弄清楚。

我希望我的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帮助程序创建的。

1 个答案:

答案 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'));