Symfony2 désactiver HTML5 de validation de formulaire
Je veux valider mon formulaire à l'aide de la validation côté serveur uniquement. Toutefois, si le navigateur prend en charge le HTML5 il permet de valider l'utilisation des attributs HTML5 ajouté au formulaire par symfony2 j'ai donc besoin d'empêcher la validation HTML5.
Vous devez vous connecter pour publier un commentaire.
Juste ajouter
novalidate
à votre<form>
tag:Si vous êtes le rendu de la forme dans TWIG, vous pouvez utiliser la suite.
'required' => false
où vous en avez besoin.Je sais que c'est une vieille question, mais avec SF2.6 dans le FormType, vous pouvez le faire:
setDefaultOptions
méthode - utilisezpublic function configureOptions(OptionsResolver $resolver)
au lieusetDefaultOptions(OptionsResolver $resolver)
!Pendant googler pour trouver une solution à ce que j'ai trouvé une, qui me semble le plus élégant si vous souhaitez désactiver la validation html5 dans votre ensemble de l'application, donc je pensais que je voudrais partager ici. Les crédits vont à l'auteur de cet article de blog.
L'idée est de créer une extension pour le "formulaire" formulaire type comme ceci:
Alors vous suffit de l'enregistrer dans vos services.yml comme ceci:
et vous avez terminé. Tous vos formulaires automatiquement un
novalidate
attribut maintenant.Symfony 3.3
De Symfony 3.3 la configuration est légèrement différente, mais toujours possible.
Légère mise à jour de la
getExtendedType
méthode pour retournerFormType
classe.Plus quelques un mineur de plus de la
extended_type
tag, qui est maintenant requis dans votre déclaration de service:Sinon, si pour une raison quelconque vous ne voulez pas le faire dans twig comme dans la réponse ci-dessus...
ou vous créez votre manuellement avec createFormBuilder alors vous pouvez simplement utiliser createFormBuilder comme un deuxième paramètre pour définir la forme de l'attribut:
Si vous êtes à l'aide de Symfony 3 (ou 2) et souhaitez désactiver la validation d'un champ spécifique que vous pouvez faire cela.
Dans cet exemple de formulaire de l'avis de la array('required' => false), vous pouvez l'ajouter à n'importe quel élément que vous souhaitez désactiver la validation pour sans la désactivation de la validation pour les autres. Très utile si vous souhaitez désactiver temporairement un seul élément au lieu de la totalité du formulaire.
Notez que cela ne désactive la validation HTML5! Cela ne désactive pas la validation côté serveur.
Référence: http://symfony.com/doc/current/book/forms.html#field-type-options
Si vous avez réellement besoin pour supprimer les attributs de validation (si vous utilisez une validation de la bibliothèque voulez bien garder toutes vos contraintes de validation dans un endroit, par exemple), vous pouvez remplacer le widget_attributes bloc dans twig.
Si vous êtes déjà en utilisant des modèles de formulaire dans app/Resources/views/form.html.rameau par exemple (et l'ai activé dans votre config.yml), vous pouvez simplement ajouter un bloc pour
Tout ce que j'ai fait ici est de supprimer les attributs liés à la validation:
{% si nécessaire %} required="required"{% endif %}{% si max_length %} maxlength="{{ max_length }}"{% endif %}{% si le modèle %} pattern="{{ modèle }}"{% endif %}Pour désactiver la Regex de validation pour un champ spécifique à l'aide formType classe:
Utilisation forme de thématisation:
D'abord créer le thème de modèle, de l'e.g app/Resources/views/form/champs.html.rameau:
Ensuite utiliser ce thème de formulaire dans votre modèle:
Ou, appliquer le thème à l'échelle mondiale (app/config/config.yml):