checkbox helper et son label dans cakephp
Cakephp offre beaucoup de possibilités permettant de générer du code html, cela permet de se soucier un peu moins de la validité au w3c et d'utiliser si l'on veut une sémantique approuvée par des développeurs chevronés.
Ici j'utilise des objets de cakephp pour créer des formulaires (d'accord je pourrai les écrire en html pur et dur mais de cette manière cake automatise pas mal de chose). Parcontre je viens de me rendre compte que lorsque l'on utilise l'helper checkbox dans cakephp ou plus précisement FormHelper::input avec l'option checkbox celui-ci génère le code suivant d'une manière synthétique :
<div><input type="checkbox" /><label>Ma checkbox</label></div>
Les tags <input/> et <label/>auraient du être inversés cela peut poser des problèmes avec un css par exemple :
label { float : left; width : 5em; } Je suis allé fouiller dans les libs de cake et pour mettre l'ordre des tags que l'on aurait dû avoir il faut éditer le fichier cake/libs/view/helpers/form à la ligne 660 et modifier le cas "checkbox" :
case 'checkbox':
//hack : change order of html tags display
//$out = $before . $this->checkbox($fieldName, $options) . $between . $out; //default
$out = $before . $out . $this->checkbox($fieldName, $options) . $between;
break;
Je ne sais pas pourquoi l'ordre en a été décidé ainsi néanmoins on peut voir le résultat suivant :
avant
après
By JakeCake - the 2008-02-15 14:53:37
Salut,
J'ai le même problème. Je pensais faire un rapport de bug. Parce que ça ressemble bien à u bug, non ? Sinon il faut une option...
JakeCake
By JakeCake - the 2008-02-15 14:59:52
Visiblement c'est un choix...
https://trac.cakephp.org/ticket/2767
By esion - the 2008-02-15 23:39:16
Merci pour l'info. (Vrai je n'avais pas recherché).
Du coup on revient du old school cooking si l'on ne veut pas toucher aux libs.
N'empêche que je me demande pourquoi ce choix. Je chercherai un de ces jours s'il y a un note de bonne pratique xhtml ou accessibilité à ce sujet.
By Laulo - the 2008-04-08 15:10:11
Peut-être parcque dans la majorité des cas (si ce n'est pasles cas normalement), on met la description de la checkbox a droite de celle ci...) Perso, je trouve que le formulaire montré en exemple aurait été mieux formaté comme ceci :
[x] Set online
La preuve, on retrouve souvent la checkbox dans les boites de login pour l'option 'Se souvenir de moi' par exemple. La case à cocher est bien à gauche du label.
Login : [ ]
Mot de passe: [ ]
[x] Se souvenir de moi
[valider]
By esion - the 2008-04-09 17:01:11
En effet, c'est valable.
Néamoins ça ne justifie pas un standard ou une note d'accessibilité. Dans un formulaire avec beaucoup de champs et des checkboxs plus ou moins mélangés, avoir une homogénéité sur la présentation devient nécessaire.
By jabberwooki - the 2008-08-19 10:17:39
Bonjour et merci pour l'astuce.
Pas top de toucher au noyau, mais ça reste toujours plus facile dans le cas présent que de bricoler la feuille de style.
Je signale juste au passage que pour la version 1.2.0.7296 de cakephp, le code à modifier se trouve à la ligne 738 et non à la ligne 660.