Classe de formulaire derivant de HTML_QuickForm
Par Nicolas SUPRIN, mercredi 14 décembre 2005 à 15:48 | PEAR | #8 | rss
Squelette d'une classe de formulaire, en PHP 5 en utilisant la librairie PEAR HTML_QuickForm
Je me sers de ce squelette au travail pour créer mes formulaires. Je le trouve simple, et facile à maintenir.
<?php /** * @desc Classe de formulaire * @author NSN <nicolas.suprin@cactuscrew.com> * @package Form * @var type nom desc * @copyright * @version 1.0 * @since 1.0 */ // --- Require l'HTML_QuickForm de PEAR require_once 'HTML/QuickForm.php'; class myForm extends HTML_QuickForm{ private $O_attribut; /** * @desc Constructeur * @author NSN <nicolas.suprin@cactuscrew.com> * @param * @return void * @see * @copyright 2005 * @version 1.0 * @since 1.0 */ public function __construct($O_attribut) { // --- Appel du constrcteur de QuickForm parent::HTML_QuickForm('monForm', 'post', $_SERVER['PHP_SELF'], '_self', null, true); // --- Initialisations $this->O_attribut = $O_attribut; $this->_init(); // --- Ajout des elements QuickForm $this->addElement(''); // --- Ajout des règles de validation $this->addRule(''); // --- Note des Champs requis $this->setRequiredNote('<span style="color: red">*</span> indique un champ requis'); // --- Validation du formulaire if ($this->validate()) { $this->process(array($this, '_processForm') ); } // affectation des valeurs par défaut au formulaire s'il y en a ... $this->_setDefaults(); } /** * @desc Initialisation * @author NSN <nicolas.suprin@cactuscrew.com> * @param * @return void * @see * @copyright 2005 * @version 1.0 * @since 1.0 */ private function _init() { // Initiliasation quelconques } /** * @desc Attribue les valeurs par defaut * @author NSN <nicolas.suprin@cactuscrew.com> * @param void * @return void * @see * @copyright 2005 * @version 1.0 * @since 1.0 */ private function _setDefaults() { $A_formDefaults['nom_du_champ'] = 'valeur_du_champ'; parent::setDefaults($A_formDefaults); } /** * @desc Validation du formualire * @author NSN <nicolas.suprin@cactuscrew.com> * @param array $A_values valeurs soumises * @return void * @see * @copyright 2005 * @version 1.0 * @since 1.0 */ protected function _processForm($A_values) { } /** * @desc Retourne le javascript (si necessaire) * @author NSN <nicolas.suprin@cactuscrew.com> * @param void * @return void * @see * @copyright 2005 * @version 1.0 * @since 1.0 */ private function _getJavascript() { return <<< SCRIPT <script language="javascript"> </script> SCRIPT; } /** * @desc Retourne l'html du formulaire * @author NSN <nicolas.suprin@cactuscrew.com> * @param void * @return string * @see * @copyright 2005 * @version 1.0 * @since 1.0 */ public function toHtml() { // --- par defaut je reourne l'html par defaut // (a commenter pour utiliser des templates perso) return parent::toHtml(); // --- Chemin du dossier de templates global $TPL; // variables du template (optionel) $A_varsTpl['variable_tpl_a_parser'] = 'valeur_de_la_variable'; // --- Charge le template require_once 'HTML/Template/Sigma.php'; $O_tpl =& new HTML_Template_Sigma($TPL); $O_tpl->loadTemplateFile('MonPackageTpl/T_formMonTemplate.tpl'); // --- Applique les variables statics $O_tpl->setVariable($A_varsTpl); // --- Renderer du formulaire require_once 'HTML/QuickForm/Renderer/ITStatic.php'; $O_rdr =& new HTML_QuickForm_Renderer_ITStatic($O_tpl); $this->accept($O_rdr); // --- retourn l'html complet return $this->_getJavascript().$O_tpl->get(); } } ?>
L'appel et l'affichage se font de préférence dans un autre fichier :
<?php require_once 'C_myForm.php'; // --- Instanciation $O_form = new MyForm(); // --- Affichage echo $O_form->toHtml(); ?>





Voir ici pour la sytaxe des templates Sigma :
www.blog.cactuscrew.com/?...
J'ai également ajouté la personnalisation de la note pour les champs requis
Aucun trackback.
Pour faire un trackback sur ce billet : http://www.blog.cactuscrew.com/tb.php?id=8&chk=jm0bpw