Django-bootstrap3: Étiquette générée avec show_label=False avec case à cocher

Créé le 28 juil. 2017  ·  8Commentaires  ·  Source: zostera/django-bootstrap3

{% bootstrap_field form.statut form_group_class='col-md-6' show_label=False %}
Le champ form.statut est une case à cocher
Résultat HTML :
<div class="col-md-6">
<div class="case à cocher">
<label for="id_statut">
<input name="statut" class="" required="" id="id_statut" type="checkbox"> J'adhère aux
<a href="url_statuts.pdf" target="_blank">statuts</a>
</label>
</div>
</div>

show_label n'a aucun effet. La source du problème est peut-être :
FieldRenderer.put_inside_label() dans post_widget_render() avec CheckBoxInput (renderers.py)

bug wontfix

Commentaire le plus utile

@dyve
Il peut être résolu en ajoutant "label_class=self.get_label_class()" à la fonction ci-dessous

def put_inside_label(self, html):
        content = '{field} {label}'.format(
            field=html,
            label=self.label,
        )
        return render_label(
            content=mark_safe(content),
            label_for=self.field.id_for_label,
            label_title=escape(strip_tags(self.field_help)),
            label_class=self.get_label_class()
        )

Cette fonction se trouve dans "bootstrap3 / renderers.py"

Tous les 8 commentaires

Merci, ça ressemble à un bug. Vous avez déjà fait des recherches. Une Pull Request avec un cas de test serait la bienvenue.

Le bug est réel.
Le correctif arrive-t-il bientôt ?

@donvito-pl @kutera avez-

J'essaierai d'enquêter, mais les chances de réussir ne sont pas si élevées :)

"addon_before, label_class et field_class" ne fonctionnent pas non plus avec la case à cocher.
Le champ de case à cocher ne peut donc pas être utilisé comme champ personnalisé.

@dyve
Il peut être résolu en ajoutant "label_class=self.get_label_class()" à la fonction ci-dessous

def put_inside_label(self, html):
        content = '{field} {label}'.format(
            field=html,
            label=self.label,
        )
        return render_label(
            content=mark_safe(content),
            label_for=self.field.id_for_label,
            label_title=escape(strip_tags(self.field_help)),
            label_class=self.get_label_class()
        )

Cette fonction se trouve dans "bootstrap3 / renderers.py"

@nikolaysm

Cela cache la case à cocher.

Peut-être quelque chose comme ça :

def put_inside_label(self, html):
        content = '{field} {label}'.format(
            field=html,
            >>>> label=self.label if self.show_label else ''
        )
        return render_label(
            content=mark_safe(content),
            label_for=self.field.id_for_label,
            label_title=escape(strip_tags(self.field_help))
        )

Ce problème a été automatiquement marqué comme obsolète car il n'a pas eu d'activité récente. Il sera fermé si aucune autre activité ne se produit. Merci pour vos contributions.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

radzhome picture radzhome  ·  4Commentaires

Macainian picture Macainian  ·  6Commentaires

jayvdb picture jayvdb  ·  7Commentaires

jterrace picture jterrace  ·  3Commentaires

DarwinSurvivor picture DarwinSurvivor  ·  3Commentaires