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

时间:2016-02-13 11:16:18

标签: php html5 forms symfony

我试图获得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不会产生&lt; input type =“number”&gt;使用{{form(myForm)}}标记树枝模板,例如EmailType&lt; input type =“email”&gt;。

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

我正在使用Symfony 3。

KR 塞巴斯蒂安

2 个答案:

答案 0 :(得分:3)

您应该尝试IntegerType::class并且不要忘记use Symfony\Component\Form\Extension\Core\Type\IntegerType; 你可以在这里找到一些帮助:http://symfony.com/doc/current/reference/forms/types.html

答案 1 :(得分:1)

如果你想在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类时,它不会呈现为数字。