Как проверить десятичную колонку mySql цены (суммы денег) в Yii? - PullRequest
4 голосов
/ 18 января 2011

Я использую колонку mySql DECIMAL (12,4) для хранения ценовых значений (посмотрим, как это использует Magento).Я хочу проверить их в моей модели ActiveRecord, используя правила CValidator Yii, но я не совсем уверен, как это сделать.

Я предполагаю, что могу сделать это с CTypeValidator , установленным на "float", но я хотел посмотреть, как другие люди делают это.Я не вижу фактического валидатора "валюты".Может быть, я должен просто подтвердить длину?

array('price', 'type', 'type'=>'float'),

или

array('price', 'length', 'max'=>17), // 12 + 4 + . = 17?

Предложения и примеры?Спасибо!

Ответы [ 3 ]

10 голосов
/ 19 января 2011

Я сам использовал правило:

array('price', 'type', 'type'=>'float'),

... при необходимости вы также можете использовать или комбинировать предыдущее с валидатором 'match'

array('price', 'match', 'pattern'=>'fancy regex magic here'),
5 голосов
/ 07 декабря 2014

Чтобы добавить рабочий пример, так как это обычный вопрос (без хорошего ответа в SO) "

public function rules(){
...
array('price', 'match', 'pattern'=>'/^[0-9]{1,12}(\.[0-9]{0,4})?$/'),
...

, где {1,12} - это диапазон целых цифр, а {0,4} - это диапазон "под" единиц.

Для нормального ценового диапазона от 0,01 до 9999,99 используйте регулярное выражение так:

'/^[0-9]{1,0}(\.[0-9]{0,2})?$/'    

ref: kitune на форумах Yii

0 голосов
/ 21 мая 2015

Для проверки номера вы можете использовать:

array('price', 'numerical', 'integerOnly' => false, 'min' => 0),

Если вам нужно ограничить цифры до и после десятичной запятой, используйте регулярное выражение, как предлагали другие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...