我试图获得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 塞巴斯蒂安
答案 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类时,它不会呈现为数字。