Fork me on GitHub

Documentations > Développeurs > Fiches techniques > Création de formulaires

Création de formulaires


Xoops dispose de tous les éléments pour créer des formulaires:
Il est préférable de créer 2 fichiers :
- un fichier pour gérer ce formulaire : affichage, prévisualisation, récupération des données : p.ex. myform.php placé á la racine du module
- un fichier 'formulaire' qui contiendra la liste des champs á compléter : myform.inc.php placé dans le répertoire include du module.

Fichier principal : myform.php

// on inclut la licence ici

include("header.php");

// par défaut on affichera le formulaire
$op = 'form';

// pour récupérer toutes les variables du formulaire avec leurs valeurs (évite les $_POST)
foreach ( $_POST as $k => $v ) {
${$k} = $v;
}

// le formulaire a été posté : soit prévisualisation, soit enregistrement
if ( isset($preview)) {
$op = 'preview';
} elseif ( isset($post) ) {
$op = 'post';
}

// on traite les différents cas
switch ($op) {

case "preview": // prévisualiation
$myts =& MyTextSanitizer::getInstance(); // MyTextSanitizer object
include XOOPS_ROOT_PATH.'/header.php';

$p_title = $myts->makeTboxData4Preview($title);
$title = $myts->makeTboxData4PreviewInForm($title);

$p_comment = $myts->makeTareaData4Preview($comment, 0, 1, 1);
$comment = $myts->makeTareaData4PreviewInForm($comment);

themecenterposts($p_title, $p_comment); // preview box titre et message
include "include/myform.inc.php"; // puis inclusion du formulaire
include XOOPS_ROOT_PATH."/footer.php";
break;

case "post": // formulaire posté
$myts =& MyTextSanitizer::getInstance();
// récupération et mise en forme des données
$title = $myts->oopsAddSlashes($title);
$message = $myts->oopsAddSlashes($comment);
$email = $myts->oopsAddSlashes($email);
$datetime = time();
$poster_ip = $GLOBALS['REMOTE_ADDR'];

// requête d'insertion dans la base
$sql = "INSERT INTO ".$xoopsDB->prefix("mymodule")."
(title, message, post_time, email, poster_ip)
VALUES ('".$title."','".$comment."','".$datetime."','".$email."','".$poster_ip."')";

// insertion dans la base, sinon message d'erreur
if ( !$result = $ xoopsDB ->queryF($sql) ) {
$messagesent = _MI_ERRORINSERT;
}

// redirection aprês post du formulaire (á adapter)
// l'exemple ci-dessous redirige sur le fichier index du module aprês affichage 'message envoyé'
redirect_header("index.php",2,$messagesent);
break;

case 'form': // affichage formulaire
default:
include XOOPS_ROOT_PATH."/header.php";

// initialisation des variables titre, commentaire et email de l'utilisateur
$title = "";
$comment = "";
$email = !empty($xoopsUser) ? $xoopsUser->getVar("email", "E") : "";

include "include/myform.inc.php"; // inclusion du formulaire

include XOOPS_ROOT_PATH."/footer.php";
break;
}
?>

Fichier formulaire : myform.inc.php

// include du formloader
include XOOPS_ROOT_PATH."/class/xoopsformloader.php";

// création du formulaire (simple ou avec thême)
$my_form = new XoopsThemeForm(_MI_MYMODULE, "myform", "myform.php");

// création text box pour le titre
$my_form->addElement(new XoopsFormText(_MI_TITLE, "title", 50, 100, $title), true);

// création text box pour l'email
$my_form->addElement(new XoopsFormText(_MI_EMAIL, "email", 50, 100, $email), true);

// création text area (simple) pour le message
$my_form->addElement(new XoopsFormTextArea (_MI_MESSAGE, "comment", $comment),true);

// variante de text area message avec toutes les options de mise en forme (insertion lien, police, smiley,.)
$my_form->addElement(new XoopsFormDhtmlTextArea(_MI_MESSAGE, 'comment', $comment, 15, 60), true);

// création boutons preview et submit
$button_tray = new XoopsFormElementTray('' ,'');
$button_tray->addElement(new XoopsFormButton('', 'preview', _MI_PREVIEW, 'submit'));
$button_tray->addElement(new XoopsFormButton('', 'post', _MI_SEND, 'submit'));
$my_form->addElement($button_tray);

// affichage du formulaire, sauf si affichage par template
$my_form->display();
?>


Affichage du formulaire :
2 possiblités :

* Affichage diret du formulaire par $my_form->display();

* Affichage par template ; il faudra modifier le fichier principal myform.php en rajoutant
juste avant le include XOOPS_ROOT_PATH."/header.php";

$xoopsOption['template_main'] = 'my_template_form.html';

et juste avant le include XOOPS_ROOT_PATH."/footer.php";

$my_form->assign($xoopsTpl);

Dans le template on récupérera les éléments du formulaire par les variables :

<{$my_form.javascript}>
<{$ my_form.name}>, <{$ my_form.action}>, <{$ my_form.method}>, <{$ my_form.title}>
<{$my_form.elements.caption}>, <{$my_form.elements.body}>

Plutôt que de récupérer les élément du formulaire séparément, on pourra le faire par une boucle

<{foreach item=element from=$ my_form.elements}>

<{/foreach}>

Licence, certains droits réservés
Partager Twitter Partagez cette article sur GG+
  Voir cet article en format PDF Imprimer cet article Envoyer cet article

Naviguer à travers les articles
Article précédent Mémento du développeur (API XOOPS) Mémento Smarty Article suivant
Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

32 Personne(s) en ligne (1 Personne(s) connectée(s) sur Documentations) | Utilisateur(s): 0 | Invité(s): 32 | Plus ...