Contactez-nous
Kitpages
17 rue de la Frise
38000 Grenoble
tel : 04 58 00 33 81
Aide mémoire form / symfony2
Introduction
Quelques points qu'on a du mal à retrouver dans les forms symfony2
Quelques fonctions pratiques
<!-- afficher une valeur d'un des champs du formulaire --> {{form.vars.value.FIELD}} <!-- récuperer la liste des enregistrements d'un champ collection dans un formulaire --> {{form.champCollection.vars.value}}
Modifier la présentation d'un form (twig)
La présentation des formulaires symfony2 est par défaut dans le twig suivant :
vendor/symfony/src/Symfony/Bridge/Twig/Resources/views/Form/form_div_layout.html.twig
On peut modifier certains éléments de cette présentation en créant notre propre twig.
Le fichier suivant : AppSiteBundle:Form:form_version_layout.html.twig modifie la présentation d'un fieldRow pour ajouter un message d'aide en cas de besoin.
<!-- file AppSiteBundle:Form:form_version_layout.html.twig --> {% block field_row %} {% spaceless %} <div> {{ form_label(form, label|default(null)) }} {{ form_errors(form) }} {{ form_widget(form) }} {% if help is defined %} <div class="kit-catalog-form-help"> {{ help|raw }} </div> {% endif %} </div> {% endspaceless %} {% endblock field_row %}
Et dans le twig qui affiche notre formulaire, il suffit d'ajouter :
<!-- Pour utiliser notre nouvelle présentation dans un formulaire : !--> {% form_theme form 'AppSiteBundle:Form:form_version_layout.html.twig' %}
Variables de formulaires
id |
L'attribut HTML id qui est rendu |
name |
Le nom du champ( exemple title ) - mais pas l'attribut HTML name qui est accessible par la variable full_name |
full_name |
L'attribut HTML name qui est rendu |
errors |
Un tableau de toutes les erreurs attachées à ce champ (ex? form.title.errors ). Notez que vous pouvez utiliser form.errors pour déterminer si un champ est valide, il ne contient que les erreurs "globales": certains champs peuvent avoir des erreurs Sinon, utilisez la variable valid |
valid |
Retourne true ou false selon que le formulaire entier est valide |
value |
La valeur qui sera utilisé au moment du rendu (couramment l'attribut HTML value ) |
read_only |
Si true , readonly="readonly" est ajouté au champ |
disabled |
Si true , disabled="disabled" est ajouté au champ |
required |
Si true , un attribut required est ajouté au champ pour activer la validation HTML5. De plus, une classe required est ajoutée au libelé. |
max_length |
Ajoute un attribut HTML maxlength à l'élément |
pattern |
Ajoute un attribut HTML pattern à l'élément |
label |
La chaine de caractère libelée qui sera rendue |
multipart |
If true , form_enctype will render enctype="multipart/form-data" . This only applies to the root form element. |
attr |
Un tableau clé-valeur qui sera rendu pour les attributs HTML pour le champ |
label_attr |
Un tableau clé-valeur qui sera rendu pour les attributs HTML sur le libelé |
compound |
Détermine si l'emplacement est un groupe de champs (par exemple, un champ choice , qui est un ensemble de case à cocher) |
{% block form_label %} {{ name }} <label{% for attrname, attrvalue in label_attr %} {{ attrname }}="{{ attrvalue }}"{% endfor %}>{{ label|trans({}, translation_domain) }}</label> {% endblock form_label %}
Conclusion
N'hésitez pas à mettre des messages dans les commentaires pour nous aider à compléter le tuto.
Commentaires
Note : on ne peut plus ajouter de commentaire sur ce site