Table des matières

Utilisation des formulaires dans l'administration de Dotclear

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>

Groupe d'éléments

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>

Les paramètres communs

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 :

Les derniers paramètres sont aussi communs, ils sont tous facultatifs et sont vides par défaut :

Champ textuel

C'est la fonction form::field(), qui prend les arguments suivants :

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>

Champ d'un mot de passe

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>

Zone de texte

C'est la fonction form::textarea(), qui prend les arguments suivants :

Exemple :

<p class="area"><label><?php echo(__('Title:').
	form::textarea('textarea',80,20,
	__('default value'))); ?></label></p>

Case à cocher

C'est la fonction form::checkbox(), qui prend les arguments suivants :

Exemple :

<p><label class="classic"><?php echo(form::checkbox('checkbox','1',
	false).' '.__('Title')); ?></label></p>

Cases d'option

C'est la fonction form::radio(), qui prend les arguments suivants :

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 :

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>

Valeur cachée

C'est la fonction form::hidden(), qui ne prend que deux arguments :

Exemple :

<p><?php echo(form::hidden('hidden',
	html::escapeHTML(__('value')))); ?></p>

Bouton

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.

Afficher un message de confirmation lors de l'appui sur le bouton

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>