Formulaires (1)
Catégorie : Fiches techniques

Classe de formulaires

Différentes classes sont disponibles pour la création de formulaires :
- les classes de formulaire : xoopsThemeform et xoopsSimpleForm, dérivées de la classe xoopsForm
- les classes d'éléments de formulaire pour l'insertion de champs texte, boutons, cases à  cocher, etc. dérivées de la classe xoopsElement
(voir les éléments standards, voir les éléments select, check et radio)

Classes de formulaires Méthodes de ces classes
xoopsForm (classe de base) addElement
xoopsSimpleForm setExtra
xoopsThemeform insertBreak
xoopsTableForm (obsolête) display
assign

Utilisation, principe général :

// Chargement du formloader
include_once XOOPS_ROOT_PATH."/class/xoopsformloader.php";

// Création de l'objet formulaire
$my_form = new XoopsThemeForm(_MD_MYMODULE_FORM_TITLE, 'myform', 'trait_form.php');

// Création des éléments de formulaire
$champ1 = new XoopsFormText(_MD_FORM_TEXT1, "title", 50, 100, $title)

// Ajout des éléments au formulaire
$my_form->addElement($champ1, true);

// Idem pour un bouton
$button = new XoopsFormButton('', 'post', _SEND, 'submit');
$my_form->addElement($button);

// Affichage du formulaire
$my_form->display();



xoopsThemeForm
Création d'un formulaire avec thême sur 2 colonnes.

XoopsThemeForm(string $title, string $name, string $action, [string $method = 'post']);

$title string Titre du formulaire
$name string Nom du formulaire
$action string Action à  exécuter lors de l'envoi du formulaire
$method string Méthode pour l'envoi du formulaire (post par défaut)

xoopsSimpleForm
Création d'un formulaire simple.

XoopsSimpleForm(string $title, string $name, string $action, [string $method = 'post']);


addElement
Méthode de la classe xoopsForm.
Ajoute l'élément de formulaire au formulaire.

my_form->addElement(object $formElement, [bool $required = false])

$formelement object Objet élément de formulaire
$required bool true pour élément obligatoire


display
Méthode de la classe xoopsForm.
Provoque l'affichage du formulaire.

my_form->display()


assign
Méthode de la classe xoopsForm.
Assigne le code html du formulaire au template (alternative à  my_form->display().

my_form->assign(object $tpl)



insertBreak
Méthode de la classe xoopsForm.
Insêre une ligne de séparation dans le formulaire

my_form->insertBreak([string $extra = ''], [string $class = ''])

$extra string Code Html à  insérer
$class string classe (CSS) pour cette ligne

Exemple

$sign_form->insertBreak('<b>Votre message</b>','itemHead');

NB: bug en v2.0.6, corrigé en v2.0.7


setExtra
Méthode de la classe xoopsForm.
Ajout dans la balise <form> de la chaine de caractêres $extra.

my_form->setExtra(string $extra)

Exemple
pour un formulaire avec un champ d'upload

$my_form = new XoopsThemeForm(_MD_MYMODULE_FORM_TITLE, 'myform', 'trait_form.php');
$my_form->setExtra("enctype = 'multipart/form-data'");

Eléments de formulaires (1)

xoopsFormHidden setDescription
xoopsFormLabel setRequired
xoopsFormText setExtra
xoopsFormTextArea setHidden
xoopsFormDhtmlTextArea
xoopsFormPassword
xoopsFormFile
xoopsFormButton
xoopsFormElementTray
>Eléments de formulaire (2)



xoopsFormHidden
Création d'un champ caché.

xoopsFormHidden (string $name, string $value)


xoopsFormLabel
Création d'un champ de type Label

xoopsFormLabel ([string $caption = ''], [string $value = ''])

$caption string intitulé du champ
$value string Valeur par défaut

xoopsFormText
Création d'un champ texte

xoopsFormText (string $caption , string $name, int $size, int $maxlength, [string $value = ''])

$caption

string

Nom du champ

$name

string

Nom de la variable

$size

int

Taille du champ

$maxlength

int

Longueur maxi de la chaine

$value

string

Valeur par défaut

Exemple

// code du script Php
$title_text = new XoopsFormText('', "title", 52, 100, $title);

<!-- Code html généré -->
<input type='text' name='title' id='title' size='52' maxlength='100' value='Titre' />

xoopsFormTextArea
Création d'un champ Zone de texte

xoopsFormTextArea (string $caption, string $name, [string $value = ''], [int $rows = 5], [int $cols = 50])

$caption string Intitulé du champ
$name string nom de la variable
$value string Valeur par défaut
$rows int nombre de lignes
$cols int nombre de colonnes


xoopsFormDhtmlTextArea
Création d'un champ Zone de texte avec bbcodes



xoopsFormDhtmlTextArea (string $caption, string $name, [string $value = ''], [int $rows = 5], [int $cols = 50], [string $hiddentext='xoopsHiddenText'])

$caption string Intitulé du champ
$name string nom de la variable
$value string Valeur par défaut
$rows int nombre de lignes
$cols int nombre de colonnes

$hiddentext

string

Texte caché


xoopsFormPassword
Création d'un champ Mot de passe

xoopsFormPassword (string $caption, string $name, [int $size = ''], , [int $cols = 50], [string $value = ''])

$caption

string

Nom du champ

$name

string

Nom de la variable

$size

int

Taille du champ

$maxlength

int

Longueur maxi du mot de passe

$value

string

Valeur par défaut


xoopsFormFile
Création d'un champ file: le code généré contiendra également 2 champs cachés (voir exemple).

xoopsFormfile (string $caption , string $name, int $maxfilesize)

$caption string intitulé du champ
$name string nom de la variable
$maxfilesize int Taille maximum du fichier

Exemple


// code du script Php
$img = new XoopsFormFile(_MD_MYMODULE_PHOTO, "photo", 30000);
$img->setExtra( "size ='20'") ;
$form->addElement($img_text);

<!-- Code html généré -->
<input type='hidden' name='MAX_FILE_SIZE' value='30000' />
<input type='file' name='photo' id='photo' size ='20' />
<input type='hidden' name='xoops_upload_file[]' id='xoops_upload_file[]' value='photo' />


xoopsFormButton
Création d'un bouton.

xoopsFormfile (string $caption , string $name, [string $value = ''], [string $type = 'button'])

$caption string intitulé du champ
$name string nom de la variable
$value int Taille maximum du fichier
$type int Type de bouton (button, submit, reset)

Exemple


// code du script Php
$form->addElement(new XoopsFormButton('', 'post', _MD_MYMODULE_SEND, 'submit'));

<!-- Code html généré -->
<input type='submit' class='formButton' name='post' id='post' value='Envoyer' />


xoopsFormElementTray
Permet de mettre plusieurs champs à  la suite.

xoopsFormElementTray (string $caption, [string $delimeter="&nbsp;"], [string $name=""])

$caption

string

Nom du champ

$delimiter

string

Délimiteur entre les champs

$name

string

Nom de la variable

Exemple

// création 'element tray'
$price_tray = new XoopsFormElementTray(_MD_XFADS_PRICE ,'');
// ajout des champs
$price_tray->addElement(new XoopsFormText('', "price", 15, 15, $price));
$price_tray->addElement($monnaie_text);
$price_tray->addElement($price_option_text);
// ajout de 'élément tray' au formulaire
$form->addElement($price_tray);


setDescription
Permet d'ajouter une description sous le titre du champ.

setDescription (string $description)


Exemple

$texte = new XoopsFormTextArea(_MD_XFGB_MESSAGE, 'message', $message, 6, 40);
$texte->setDescription('<span style="font-size:x-small;font-weight:bold;">Entrez ici votre dédicace</span>');
$sign_form->addElement($texte, true);


setRequired
Pour obliger le champ à  être rempli.
Alternative au paramêtre $required = true de addElement


setHidden
Testée, mais n'ai pu déterminer l'objectif de cette méthode (buggée ?)

setHidden ()



setExtra
Permet d'ajouter une chaine de caratêres à  l'élément de formulaire.

setExtra(string $extra,[bool $replace = false])

$extra string Chaine à  ajouter au code généré pour le champ
$replace bool si true remplace le code généré par la chaine $extra (au lieu de l'ajouter)

Ex emples

// Pour fixer la taille du champ
$texte->setExtra("size = '60'")

// Champ en lecture seule
$texte->setExtra("readonly = 'readonly'")

// Action sur changement de sélection
$select = new XoopsFormSelect('', 'user_avatar');
$select->setExtra("onchange='showImgSelected(\"option_color_image[".$i."] .......... )'");

<a href="http://creativecommons.org/licenses/by-nc-sa/2.0/fr/" title="Licence, certains droits réservés"><img src="http://www.frxoops.org/images/cdr_bouton.gif" alt="Licence, certains droits réservés" /></a>