为什么Symfony2为类型编号的表单字段呈现<input type =“text”/>而不是<input type =“number”/>

时间:2012-10-18 22:17:14

标签: forms html5 symfony

在Symfony2表单中,您有以下两种字段类型(其中包括):
numberhttp://symfony.com/doc/2.0/reference/forms/types/number.html
integerhttp://symfony.com/doc/2.0/reference/forms/types/integer.html

我的问题是integer类型呈现<input type="number">number类型呈现<input type="text">因此缺少HTML5新输入类型属性(min,max,step)的原因?

是否有一种体面而干净的方式来配置number表单类型来呈现<input type="number">标记(形式主题对我来说似乎有点脏)?

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

1 个答案:

答案 0 :(得分:3)

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

{% 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 。想象一下,对于经常旅行的无经验用户来说,这会让他们感到困惑。 :)