【问题标题】:Why is Symfony2 rendering a <input type="text"> instead of <input type="number"> for a form field of type number为什么 Symfony2 为 number 类型的表单字段呈现 <input type="text"> 而不是 <input type="number">
【发布时间】:2012-10-09 11:59:15
【问题描述】:

在 Symfony2 表单中,您有以下两种来自字段类型(以及其他):
number:http://symfony.com/doc/2.0/reference/forms/types/number.html
integer:http://symfony.com/doc/2.0/reference/forms/types/integer.html

我的问题是为什么integer 类型呈现&lt;input type="number"&gt;number 类型呈现&lt;input type="text"&gt; 从而缺少HTML5 新的输入类型属性(最小、最大、步长)?

有没有一种体面和干净的方式来配置number 表单类型以呈现&lt;input type="number"&gt; 标记(表单主题对我来说似乎有点脏)?

编辑
似乎更改字段模板是唯一的选择,即使它声明了评论 {# type="number" doesn't work with floats #}

【问题讨论】:

    标签: forms html symfony


    【解决方案1】:

    实际上,如果他们设置属性step="any",它也适用于number。但是,您可以覆盖 number-widget 的块并将其更改为:

    {% block number_widget %}
    {% spaceless %}
        {% set type = type|default('number') %}
        {{ block('input') }}
    {% endspaceless %}
    {% endblock number_widget %}
    

    查看此链接,查看默认表单布局模板:

    https://github.com/symfony/symfony/blob/master/src/Symfony/Bridge/Twig/Resources/views/Form/form_div_layout.html.twig

    编辑

    这只是一个疯狂的猜测,但也许他们没有设置number 以免混淆用户。 当您使用英文系统时,Chrome 将接受 1.9 之类的值。当您在德语系统的 Chrome 中输入此值时,该值将立即更正为 19。在德语系统上,您必须输入 1,9。 Chrome 会在提交时将其更改为 1.9。想象一下对于经常出差的没有经验的用户会感到困惑。 :)

    【讨论】:

    • 您可能已经在 form_div_layout.html.twig 中注意到(在您的链接中提供)他们留下了评论 {# type="number" doesn't work with floats #}
    • 哈哈,我经常看这个,从来没有读过这个评论。 :)
    猜你喜欢
    • 2017-06-04
    • 2019-01-31
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    • 2016-05-24
    • 1970-01-01
    • 2016-02-11
    • 2018-09-22
    相关资源
    最近更新 更多