2016-07-13 42 views
1

これはおそらく簡単な質問ですが、わかりません。CakePHP3:小数点の入力を有効にする

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)

をチェック値が有効な10進数です。符号と指数はともに です。

しかし、それはこの文脈では、パラメータとしてstringをとらない(とCakePHPが焼成時に自動的に私のprice列にdecimal()を割り当てる)ので、私はdecimal('price', 2)が動作しない理由は、これがあると思います。

アイデア?

REQUESTED EDIT:

全体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ヘルパーを使用して作成されます。

答えて

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')); 
+0

を試すことができますご返信いただきありがとうございます。私はこのコード行をコピーして貼り付けます(以前の 'decimal( 'price')'を削除します)。しかしそれでも整数だけが必要です。 – PHPJunior

+0

それは私のために働いています – pradeep

+0

あなたの妥当性検査コードを表示してください、私はそれを省略して、 '左'を取ってみてください – pradeep

関連する問題