Carnet Wiki

Doc Saisies complémentaire

Version 8 — Avril 2010 JLuc

-  exemples de création de boutons radio et de menus select
-  autres saisies
-  CSS : mettre 2 saisies côte-à-côte
-  vérifications de la conformité des valeurs saisies


Boutons radios et Sélections

La doc n’indique pas comment créer les options des select ou les différents boutons radio d’un ensemble,
mais le log ainsi que les fichiers sources donnent des exemples :

Pour les saisies « boutons radio »

	[(#SAISIE{radio, afficher_liste,
		label=<:plugin:afficher_liste:>,
		explication=<:plugin:explication_afficher_liste:>,
		datas=#ARRAY{
			cle1,valeur1,
			cle2,valeur2,
			cle3,valeur3}})]


[(#SAISIE{radio,maintenance}
	{label=Durée de maintenance}
	{defaut=12}
	{datas=#ARRAY{
		12,12 mois,
		24,24 mois,
		36,36 mois,
}})]

Pour les saisies « select »

[(#SAISIE{selection,maintenance}
	{label=Durée de maintenance}
	{option_intro=Sélectionnez la durée de maintenance}
	{defaut=12}
	{datas=#ARRAY{
		12,12 mois,
		24,24 mois,
		36,36 mois,
}})]

Autres saisies

Il y a moultes saisies dans le plugin, fort utiles dans certains cas :
-  choix d’un n° d’article original (qui n’est pas une traduction)
-  choix d’une rubrique existante
-  choix de la langue
-  choix d’un article à l’intérieur d’une rubrique
-  choix d’un secteur
_...

Certains font appel aux « selecteurs » définis dans BONUX et font un ample usage d’ajax pour faciliter la sélection, par navigation arborescente dans les rubriques par exemple.


CSS : mettre 2 saisies côte-à-côte

Par défaut, des SAISIES successives sont affichées les unes sous les autres. (propriété clear:both sur les <li> définie dans habillage.css).

Pour faire apparaître une saisie à droite d’une autre, sur la même ligne, il faut surcharger les propriétés CSS de manière à corriger les valeurs définies dans habillage.css

Pour cela on créera un fichier perso.css dans le dossier squelettes, qui contiendra les nouvelles valeurs.

Par exemple, pour un formulaire « identite » qui comporte une #saisie{input, prenom} immédiatement suivi d’une #saisie{input, nom}, pour que le nom apparaisse à droite du prénom, il suffit de mettre dans perso.css :

.formulaire_identite .editer {
        float: left;
}
.formulaire_identite  .editer_prenom {
        clear: left;
}
.formulaire_identite  .editer_nom {
        clear: right;
        margin-left: 10px;
}


Vérifications de la conformité des valeurs

Les #SAISIES peuvent être utilisées dans le cadre d’un formulaire CVT.

La partie ’verifier’ du code associé fait les vérifications adéquates. Elle peut pour cela faire appel aux vérifications prédéfinies par le plugin ’verifier’ (actuellement encore en dev).Voir les exemples d’usage dans le plugin lui-même.

Par exemple, pour vérifier un code postal français, ça s’utilise en faisant :

	
$verifier = charger_fonction('verifier','inc');
if ($err=$verifier (_request('cp'),'entier', array('min'=>1000,'max'=>99999))
     $erreurs['cp'] =  $err;

)

SAISIES propose également une fonction ’saisies_verifier($formulaire)’ qui vérifie et valide en un seul appel la conformité de toutes les saisies, et renvoie le tableau des erreurs dans le cas d’une non validité.

Pour cela,
-  il faut disposer de la constitution du formulaire sous forme d’un tableau PHP.
C’est le cas par exemple si la saisie est générée par ce même tableau php au moyen de # GENERER_SAISIES
-  
Pour cela , chaque saisie doit avoir été créée avec une option supplémentaire de nom ’verifier’ et dont la valeur est un tableau définissant le type de validation à faire avec le plugin verifier.Ce tableau contient 2 entrées :
-  ’type’
-  ’options’

Ce tableau contient 2 entrées :
-  ’type’
-  ’options’

Pour chaque saisie, saisies_verifier vérifie si elle a bien été saisie (dans le cas d’une saisie obligatoire), puis appelle la fonction de vérification avec les options indiquées.

Exemple ( version spip au lieu de php ) à vérifier  :
<code
<
code >
#SETverif_age,
#ARRAY type, entier,
options, #ARRAYmax,77,min,7
#SAISIEinput, age_lecteur,
verifier=#GETverif_age

Question : comment disposer de $formulaire pour un formulaire donné ? Cela suppose t il de constituer le formulaire à partir d’un tableau PHP ? Et alors ce n’est pas utilisable pour un formulaire déclaré en HTML par une succession de #SAISIEs ?

Retour à la version courante

Toutes les versions