16 votes

Inclure l'attribut novalidate dans le modèle twig de Symfony2

J'essaie de désactiver la validation HTML5 de mon formulaire et j'ai vu que je pouvais inclure le paramètre novalidate dans la balise de formulaire, mais j'utilise le paramètre novalidate dans le formulaire.

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

pour créer mes formulaires.

D'après ce que j'ai lu, je devrais être en mesure d'inclure un attribut dans le form_start de sorte que le code me donnerait ceci

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

Mais cela ne fonctionne pas... Quelqu'un a-t-il une idée ?

29voto

Elnur Abdurrakhimov Points 23540

Vous avez besoin d'une paire clé/valeur :

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

2voto

RChanaud Points 118

Si vous voulez ajouter novalidate dans tous les formulaires de votre application, créez un modèle twig comme ceci :

{% 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 : Thème du formulaire

2voto

SudarP Points 477

Vous pouvez définir l'attribut novalidate du formulaire à l'objet du formulaire symfony 2 comme ceci

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

2voto

Stan Fad Points 511

Vous pouvez utiliser la fonction createFormBuilder()->setAttributes() pour définir n'importe quel attribut à l'ensemble du formulaire, notamment novalidate :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X