2016-07-13 6 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)

Проверяет, что значение является действительным десятичным. Оба знака и экспонента - .

Но он не принимает string в качестве параметра в этом контексте (и CakePHP назначить decimal() моей price колонки автоматически во время выпечки), так что я думаю, это почему decimal('price', 2) не работают.

Любые идеи?

ЗАПРОШЕННЫЙ 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

Спасибо за ваш ответ. Я копирую-вставляю эту строку кода (и удаляю предыдущий «десятичный (« цена »)), но он все еще хочет только целые числа. – PHPJunior

+0

он работает для меня – pradeep

+0

попробуйте удалить 'left' его по желанию, если нет, то покажите мне ваш код подтверждения – pradeep

Смежные вопросы