Bonjour,
J'ai une question toute simple : comment personnaliser le field_row des checkboxes de mon formulaire ?
Le but est de ne pas avoir les checkboxes les unes à la suite des autres mais en liste (ul > li).
Merci par avance.
Bonjour,
J'ai une question toute simple : comment personnaliser le field_row des checkboxes de mon formulaire ?
Le but est de ne pas avoir les checkboxes les unes à la suite des autres mais en liste (ul > li).
Merci par avance.
Salut,
La doc sur le form theming est pour toi : http://symfony.com/doc/current/book/...l#form-theming
Merci pour ta réponse.
J'avais déjà parcouru la doc, mon problème ne concerne pas le form theming, mais le cas particulier d'un field_row de checkbox !
? Bah c'est exactement ca.
Regarde ce que tu peux personnaliser ici : https://github.com/symfony/symfony/b...yout.html.twig
Et personnalise le en suivant la doc que j'ai mis au dessus.
c'est exactement le bloc checkbox_widget:
{% block checkbox_widget %}
{% spaceless %}
<li>
<input type="checkbox" {{ block('widget_attributes') }}{% if value is defined
%} value="{{ value }}"{% endif %}{% if checked %} checked="checked"{% endif %} />
</li>
{% endspaceless %}
{% endblock checkbox_widget %}
J'ai également vu cela, mais justement, je n'ai rien trouvé pour personnaliser le field_row de checkboxes (pas de checkbox_field_row ou chose dans le genre !).
Mon fields.html.twig actuel :
(j'ai adapté pour l'utilisation du framework CSS Twitter - Bootstrap)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 {% block field_row %} {% spaceless %} <div class="clearfix"> {{ form_label(form, label) }} <div class="input"> {{ form_widget(form) }} {{ form_errors(form) }} </div> </div> {% endspaceless %} {% endblock field_row %}
Comment intégrerais-tu la personnalisation du field_row des checkboxes pour avoir une liste ul > li avec ça ?
Merci encore pour tes réponses.
Aah ok. Tu peux pas. C'est pas logique, imagine t'es en layout table, il te met une balise table avant, des tr au milieu, puis quand il arrive aux checkboxes, des li ? Non c'est impossible.
Par contre si t'as un formulaire avec que des checkboxes, et que tu veux que tout soit en li, tu peux créer un layout_ul.
Voici la personnalisation que j'ai faite (extrait) :
Certaines choses sont spécifiques à mon code (attr.noLabel et attr.chkbx_style).... Tu peux te servir de attr pour définir une classe (pas au sens CSS, mais un attributs personnalisé, comme mes chckbx_style ) sur laquelle tes checkboxs seront affichées en liste
Donc pour moi c'est possible
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 {# Pas de label global sur les choices expanded #} {% block choice_row %} {% spaceless %} <div class="field_row"> {#{% if not expanded %} {{ form_label(form) }} {% endif %}#} {% if not attr.noLabel is defined %} {{ form_label(form) }} {% endif %} {% if help is defined %} {{ form_widget(form, {'help':help, 'attr':attr}) }} {% else %} {{ form_widget(form, {'attr':attr}) }} {% endif %} {{ form_errors(form) }} </div> <div class="spacer"></div> {% endspaceless %} {% endblock choice_row %} {# Le label vient après l'input sur les radios #} {% block radio_row %} {% spaceless %} <div class="field_row"> {{ form_widget(form, {'attr':attr}) }} {{ form_label(form) }} {{ form_errors(form) }} </div> <div class="spacer"></div> {% endspaceless %} {% endblock radio_row %} {% block checkbox_row %} {% spaceless %} <div class="field_row"> {% if attr.chkbx_style is defined %} {% if attr.chkbx_style == 'left_label' %} {# Le label est placé avant l'input sur les checkbox (s'intègre dans la disposition standard des forms) #} {{ form_label(form, null, {'attr' : attr}) }} {% if help is defined %} {{ form_widget(form, {'help':help, 'attr':attr}) }} {% else %} {{ form_widget(form, {'attr':attr}) }} {% endif %} {{ form_errors(form) }} {% endif %} {% else %} {# Le label vient après l'input si left_label n'est pas déclaré #} {% if help is defined %} {{ form_widget(form, {'help':help, 'attr':attr}) }} {% else %} {{ form_widget(form, {'attr':attr}) }} {% endif %} {{ form_label(form) }} {{ form_errors(form) }} {% endif %} </div> <div class="spacer"></div> {% endspaceless %} {% endblock checkbox_row %}
- Mon blog PHP : http://blog.alterphp.com
- "Peace cannot be kept by force, it can only be achieved by Understanding" -- Albert Einstein
Génial pc.bertineau, c'est exactement ce que je cherchais. Je vais me pencher sur cet exemple en l'adaptant à mon cas (le framework CSS Twitter Bootstrap).
Merci à tous.
On peut aussi tester le type du champ :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 {% block field_row %} {% spaceless %} {% if 'checkbox' in types %} <!-- Mise en forme pour les checkboxes --> {% else %} <!-- Mise en forme par defaut --> {% endif %} {% endspaceless %} {% endblock field_row %}
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager