Я разрабатываю приложение с CakePHP, которое обрабатывает денежные значения. Клиент хочет, чтобы числа имели пользовательский формат, например 1.275,34
, то есть точку в качестве разделителя в целочисленной части и запятую в качестве разделителя десятичной части.
Мне интересно, каков наилучший подход для управления этим, поскольку мне нужно сделать две основные вещи:
- Проверка значений, записанных в формах, в соответствии с этим пользовательским форматом.
- Преобразуйте эти значения в соответствии с форматом, ожидаемым типом данных столбца MySQL (
decimal(18,2)
в этом случае 1275.34
в приведенном выше примере).
Я думаю, что у меня есть эти опции, но я не совсем доволен ими, потому что несколько моделей работают с этим нестандартным форматом, а это означает репликацию некоторого кода:
- Проверьте и преобразуйте значение в контроллере перед вызовом
$this->Model->save()
, возможно, с использованием компонента.
- Проверка данных с использованием пользовательских правил в модели (массив
var $validate
) и их преобразование, возможно, с использованием Поведения.
Что вы рекомендуете? Есть ли другой способ справиться с этим?
Спасибо!