Symfony - 在表单类中将HTML5输入类型“text”更改为“number”


Symfony - change HTML5 input type "text" to "number" in form class

我试图为HTML5前端支持获取类型为"number"的输入。

我的表单类:

class MyType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('a', NumberType::class); // i want <input type="number" ...>
        $builder->add('b', EmailType::class); // <input type="email" ...> works
        $builder->add('c', TextareaType::class);
    }
}

NumberType 不会像 EmailType 那样在带有 {{ form(myForm( }} 的树枝模板中生成 标签。

我找不到设置所需 html 属性值的选项。"attr"设置不会更改它。

我正在使用Symfony 3。

氪塞巴斯蒂安

如果你想

在你的html上有type="number",你应该按照答案说的去做@tompte但它不会呈现任何步骤属性。如果要渲染额外的属性,则应像这样添加表单:

$builder->add('a', IntegerType::class, array('scale' => 2, 'attr' => array('step' => 0.01))); 

如果您阅读number_widget块的源代码,您将看到以下注释:

{%- block number_widget -%}
    {# type="number" doesn't work with floats #}
    {%- set type = type|default('text') -%}
    {{ block('form_widget_simple') }}
{%- endblock number_widget -%}
因此,这就是为什么

当您使用 NumberType 类时它不会呈现为数字的原因。

你应该尝试IntegerType::class,不要忘记use Symfony'Component'Form'Extension'Core'Type'IntegerType; 您可以在此处找到帮助:http://symfony.com/doc/current/reference/forms/types.html