在Symfony2 twig模板中包含novalidate属性

时间:2013-09-09 16:44:12

标签: html5 validation symfony twig

我正在尝试禁用表单的HTML5验证,我看到我可以在表单标记中包含novalidate但是我正在使用

{{ form_start(contact) }}
{{ form_end(contact) }}

创建表单。

现在从我读过的内容中我应该能够在form_start中包含一个属性,这样代码就可以给我这个

{{ form_start(contact, {'attr' : {'novalidate'}})

然而这不起作用......有没有人有任何想法?

4 个答案:

答案 0 :(得分:24)

您需要一个键/值对:

{{ form_start(contact, {attr: {novalidate: 'novalidate'}}) }}

答案 1 :(得分:2)

您可以将表单novalidate属性设置为symfony 2表单对象,如此

$form = $this->createForm(new ClientType(), $clientEntity, array(
    'action' => $this->generateUrl('client_create'),
    'method' => 'POST',
    'attr'=>array('novalidate'=>'novalidate') //add novalidate attribute to form
)); 

答案 2 :(得分:1)

如果您想在应用的所有形式中添加novalidate,请创建一个像这样的树枝模板:

{% extends 'form_div_layout.html.twig' %}

{# FORM START #}
{% block form_start %}
<form  action="{{ action }}"{% for attrname, attrvalue in attr %} {{ attrname }}="{{ attrvalue }}"{% endfor %}{% if multipart %} enctype="multipart/form-data"{% endif %} novalidate>
{% endblock form_start %}

Documentation: Form Theme

答案 3 :(得分:0)

您可以使用函数createFormBuilder()->setAttributes()为整个表单设置任何属性,包括novalidate

    $form = $this->createFormBuilder($task)
        ->add('value', IntegerType::class)
        ->add('save', SubmitType::class, array('label' => 'Save',))
        ->setAttributes(array(
            'novalidate'=>'novalidate',
            ))
        ->getForm();