eli*_*lon 5 php validation cakephp decimal
我正在用 CakePHP 开发一个处理货币价值的应用程序。客户希望数字具有像 一样的自定义格式1.275,34,即一个点作为整数部分的分隔符,一个逗号作为小数部分的分隔符。
我想知道管理这个的最佳方法是什么,因为我需要做两件基本的事情:
decimal(18,2)在本例中,1275.34在上面的示例中)预期的格式转换这些值。我想我有这些选项,但我对任何选项都不满意,因为有几个模型可以使用该自定义格式,这意味着复制一些代码:
$this->Model->save(),可能使用组件。var $validate数组)中的自定义规则验证数据并转换它们,可能使用行为。你有什么建议吗?有没有其他方法来处理这个问题?
谢谢!
“1.234,56”格式是欧洲货币格式,因此您最好让整个应用程序都使用此格式。您需要做的是使用 来设置应用程序的货币区域设置setlocale(LC_MONETARY,$locale)。因此,例如:
setlocale(LC_MONETARY, 'it_IT');
Run Code Online (Sandbox Code Playgroud)
然后,您可以money_format适当地格式化货币字符串,并Model::beforeValidate()在验证之前使用回调来处理任何货币输入,以便您可以根据标准十进制格式进行验证。这个相关问题可能有用。