我试图为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