ckform override fieldsed id

18/09/10

J'utilise le module CKform pour gérer les formulaires car ses fonctionnalités sont bien pratiques.

En revanche, j'ai du l'améliorer concernant deux points importants à mon sens :

  1. vous n'allez pas sans savoir qu'un champ bien codé se présente sous la forme <label for="nom_l">Nom</label> : <input type="text" id="nom_l" nam="nom_l" />
    Or il manque l'identité sur les champs de formulaire générés par ckform
  2. pour les formulaires longs, les champs peuvent être regroupés, si nécessaire, via l'utilisation de la balise <fieldset>
    or cette balise n'est pas générée par ckform (ou je n'ai pas trouvé).

La solution : l'override

La marche à suivre :

  1. copier le fichier components/com_ckforms/views/ckforms/tmpldefault.php et le coller dans le répertoire templates/montemplate/html/com_ckforms/ckforms (c'est ce qu'on appelle de l'override)
  2. chercher la chaine de caractère type="text" et lorque vous tombez sur une balise input sans id, ajouter la lui : <input type="text" id="$field->name"
  3. chercher la chaine de caractère $field->typefield == "fieldsep" et remplacer par le code suivant :
    else if ($field->typefield == "fieldsep")

    {

    ?><?php if ($field->t_noborderFS == "1") {echo ' </fieldset>';}else  echo ' <fieldset> <legend>',$field->label,'</legend>';?><?php

    }
  4. Lorsque vous voulez insérer une balise fieldset, choisissez le type "ligne de séparation" et n'oubliez pas de finir votre balise fieldset en insérant un autre champ de type "ligne de séparation" mais en cochant cette fois "invisible" au dessous du type.

Je sais, c'est de la grosse bidouille mais c'est pour la bonne cause.

PS : si quelqu'un a une solution plus élégante, je me ferais un plaisir de lui faire de la pub !

 

Partager sur mes réseaux