【问题标题】:symfony2: how to use points instead of comma for decimals separator while keeping fr localesymfony2:如何在保持 fr 语言环境的同时使用点而不是逗号作为小数分隔符
【发布时间】:2015-04-07 22:07:06
【问题描述】:

在 Symfony 2 中,使用法语默认语言环境,在某些情况下十进制值分隔符在表单中呈现为逗号。

表单中的逗号并不总是转换为我的数据库使用的分隔符。

如何确保表单提交后每个数字数据字段的逗号都替换为一个点?

我找到了NumberToLocalizedStringTransformer

This reference 但我是否需要为每个表单添加一个数据转换器以使其按我的意愿工作?

【问题讨论】:

  • 我的回答不能解决您的问题吗?

标签: php symfony numbers decimal locale


【解决方案1】:

使用 DataTransformer 是解决本地化问题的一种方法。您不需要将其添加到每个表单中。您可以创建自己的 FormType 扩展或继承(我猜)number 类型。在您自己的表单类型中添加转换器并调用FormBuilderInterface::addViewTranformer()

您可以找到更多information here。这是我自己的一种自定义类型的示例。使用此方法,您还可以自定义用于渲染的小部件。

class CustomType extends NumberType
{        
    public function buildForm ( FormBuilderInterface $builder, array $options )
    {
        parent::buildForm( $builder, $options );

        $builder->addViewTransformer( new CustomTransformer() );
    }

    public function getName()
    {
        return 'my_custom_type';
    }
}

然后,当您想使用本地化号码时,请使用 my_custom_type 而不是 number 构建表单。

另一种解决方案是通过显示错误来强制您的用户使用积分,如果他们使用其他任何东西。 Look here 用于 Symfony 表单验证。带有/^(\d|\.)+$/ 之类的Regex 验证器可以工作。

【讨论】:

  • 这确实是我最终做的,但我希望有一种更通用的方法来处理这个
猜你喜欢
  • 2015-10-15
  • 1970-01-01
  • 2015-11-22
  • 1970-01-01
  • 1970-01-01
  • 2012-09-28
  • 2020-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多