Dotclear intègre une classe PHP pour créer des formulaires, c'est la classe form que nous allons utiliser.
On placera les champs des formulaires dans une balise <form> :
<form method="post" action="<?php echo($p_url); ?>"> ... <p><?php echo $core->formNonce(); ?></p> <p><input type="submit" name="save" value="<?php echo __('Save'); ?>" /></p> </form>
Important :
Tous les formulaires doivent intégrer<?php echo $core→formNonce(); ?>.
En englobant un champ et le texte qui l'accompagne dans une balise <label> </label>, on peut avoir des champs accessibles sans avoir à gérer les correspondances entre les attributs for="" des <label> </label> et les id="" des balises cibles.
Exemple :
<p><label><?php echo(__('Title:'). form::field('field_maximal',40,255, __('default value'),'maximal')); ?></p>
La balise <fieldset> </fieldset> permet de grouper des éléments et de leur donner un intitulé grâce à la balise <legend> </legend> :
<fieldset> <legend><?php echo(__('Hello World!')); ?></legend> ... </fieldset>
Exemple :
<fieldset> <legend><?php echo(__('Hello World!')); ?></legend> <p><label class="classic"><?php echo( form::checkbox('example_active','1',$settings->example_active). ' '.__('Enable')); ?></label></p> <p><label><?php echo(__('Title:'). form::combo('combo',$combo_values,'2')); ?> </label></p> <p class="form-note"> <?php echo(__('Hello World!')); ?> </fieldset> <fieldset> <legend><?php echo(__('Hello World!')); ?></legend> <p> <?php echo __('Title:'); ?> <label class="classic"><?php echo( form::radio(array('radio'),html::escapeHTML('1'),false). __('one')); ?></label> <label class="classic"><?php echo( form::radio(array('radio'),html::escapeHTML('2'),true). __('two')); ?></label> </p> </fieldset>
Toutes les fonctions de cette classe utilisent le même premier paramètre : nid, il sert à définir les attributs name="" et id="", il accepte deux types de valeurs :
name="" est le premier élément du tableau et id="" est vide, c'est utile quand on définit des éléments radio pour éviter d'utiliser plusieurs fois le même idname="" est le premier élément du tableau et id="" le secondname="" et id="" prennent sa valeurLes derniers paramètres sont aussi communs, ils sont tous facultatifs et sont vides par défaut :
C'est la fonction form::field(), qui prend les arguments suivants :
html::escapeHTML() (une chaîne de caractères)Exemple :
<p> <label for="field_maximal"> <?php echo(__('A field with the maximal class:')); ?></label> <?php echo(form::field('field_maximal',40,255,__('default value'),'maximal')); ?> </p>
Pour un champ obligatoire, il est nécessaire d'ajouter la classe required à l'élément <label> et une abréviation :
<p> <label class="required" for="field_maximal"> <abbr title="<?php echo(__('Required field')); ?>">*</abbr> <?php echo(__('A field with the maximal class:')); ?></label> <?php echo(form::field('field_maximal',40,255,__('default value'),'maximal')); ?> </p>
C'est la fonction form::password(), qui prend les mêmes arguments que la fonction form::field(),
Exemple :
<p><label><?php echo(__('A field with the maximal class:'). form::password('password',20,255)); ?></p>
C'est la fonction form::textarea(), qui prend les arguments suivants :
html::escapeHTML() (une chaîne de caractères)Exemple :
<p class="area"><label><?php echo(__('Title:'). form::textarea('textarea',80,20, __('default value'))); ?></label></p>
C'est la fonction form::checkbox(), qui prend les arguments suivants :
html::escapeHTML()Exemple :
<p><label class="classic"><?php echo(form::checkbox('checkbox','1', false).' '.__('Title')); ?></label></p>
C'est la fonction form::radio(), qui prend les arguments suivants :
html::escapeHTML()Exemple :
<p> <?php echo __('Title:'); ?> <label class="classic"><?php echo( form::radio(array('radio'),html::escapeHTML('1'),false). __('one')); ?></label> <label class="classic"><?php echo( form::radio(array('radio'),html::escapeHTML('2'),true). __('two')); ?></label> </p>
C'est la fonction form::combo(), qui prend les arguments suivants :
html::escapeHTML() (facultatif)Exemple d'un tableau de valeur :
$combo_values = array( # un groupe de valeurs __('Numbers') => array( __('one') => 1, __('two') => 2 ), # une valeur seule __('Hello World!') => 'hello_world' );
Utilisation de la fonction :
<p><label><?php echo(__('Title:'). form::combo('combo',$combo_values,'2')); ?> </label></p>
C'est la fonction form::hidden(), qui ne prend que deux arguments :
html::escapeHTML()Exemple :
<p><?php echo(form::hidden('hidden', html::escapeHTML(__('value')))); ?></p>
Les boutons servent à valider les formulaires
<p><input type="submit" name="lorem_ipsum" value="<?php echo __('Lorem ipsum'); ?>" /></p>
Astuce :
L'utilisation de plusieurs<input type="submit" … /> avec différents valeurs de name="" permet de réaliser plusieurs actions avec le même formulaire, par exemple avec plusieurs cases à cocher et 2 boutons : Désactiver et Supprimer.
Ajouter ceci dans la balise <head> de la page :
<script type="text/javascript"> //<![CDATA[ <?php echo(dcPage::jsVar('dotclear.msg.confirm_lorem_ipsum', __('Lorem ipsum?'))); ?> $(document).ready(function () { $('input[@name="lorem_ipsum"]').click(function() { return window.confirm(dotclear.msg.confirm_lorem_ipsum); }); }); //]]> </script>
Wiki powered by Dokuwiki.