【问题标题】:Symfony's NumberType as HTML5 input field and a custom locale settingSymfony 的 NumberType 作为 HTML5 输入字段和自定义区域设置
【发布时间】:2017-06-22 10:37:28
【问题描述】:

我的应用程序更喜欢 de 作为 locale 来显示数字,例如 1.234.567,89 而不是 1,234,567.89(或 1234567,89 而不是 1234567.89)。

所以我更改了config.yml中的本地参数:

parameters:
    locale: de

此外,我使用 NumberType 来生成我的表单字段:

class MyFormType extends AbstractType
{

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('myNumber', NumberType::class, [
            'label'    => 'Tax [EURO]',
            'required' => false,
            'scale'    => 2,
            'attr'     => array(
                'min'  => 0,
                'max'  => 9999.99,
                'step' => 0.01,
            ),
        ]);
    }
}

现在 myNumber 的值在生成的 HTML5 输入字段中显示为德语格式的数字,并且该字段既可以工作也不会显示任何数字。如果我将语言环境改回en,一切正常。

IMO html5 输入字段需要填写英文格式的数字。但是我怎样才能设法输出不是德语的数字呢?

总结

使用语言环境de,该字段 工作。尽管使用德语格式的数字正确填充了 value 属性,但该值未显示在生成的输入字段中:<input type="number" value="1234567,89">

使用语言环境en,该字段有效:<input type="number" value="1234567.89">

有趣的事实:我的浏览器(Firefox 45.9.0 和 Google Chrome v54.0.2840.71,debian/64 位)检测到我计算机的区域设置de,并将数字显示为德语格式即使我将应用程序的语言环境设置为 ennumber 类型的输入字段)

添加 lang 属性 <html lang="{{ app.request.locale }}"> 没有帮助。

非常感谢!

【问题讨论】:

    标签: php html forms symfony locale


    【解决方案1】:

    修复了问题...不要将 symfony 的 NumberType 用于 HTML5 类型的 number 输入元素!

    改为使用常见的TextType 表单类型

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('myNumber', TextType::class, [...]);
    }
    

    并通过模板添加属性type="number"。例如使用 Twig 引擎,您可以使用以下代码:

    {{ form_widget(form.myNumber, {'type':'number', 'lang': app.request.locale}) }}
    

    【讨论】:

    • 我不知道这是否是推荐的方式,但它可以解决问题;)Thks
    【解决方案2】:

    你可以尝试设置 html lang 属性

    <html lang="de">
    

    但我认为你应该使用模式属性而不是数字,因为你不能依赖浏览器的决定,看看这篇文章https://ctrl.blog/entry/html5-input-number-localization

    有点喜欢

    &lt;input type="number" pattern="[0-9]+([,\.][0-9]+)?"

    这将允许逗号和点

    【讨论】:

      猜你喜欢
      • 2011-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-27
      • 2014-12-23
      • 1970-01-01
      相关资源
      最近更新 更多