CactusCrew

CactusCrew
 
Classe de formulaire derivant de HTML_QuickForm

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>&nbsp;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();
 
?>
 

 
PDF
« retour à l'accueil
Commentaires
1.   Nicolas SUPRIN  |  vendredi 23 décembre 2005 à 11:53
Il manquait la définition de la methode protected de validation du formulaire, je l'ai rajoutée.
 
2.   nico  |  lundi 26 décembre 2005 à 10:55

Voir ici pour la sytaxe des templates Sigma :
www.blog.cactuscrew.com/?...

 
3.   nico  |  lundi 26 décembre 2005 à 11:21

J'ai également ajouté la personnalisation de la note pour les champs requis

 
« retour à l'accueil
Trackbacks

Aucun trackback.

Les trackbacks pour ce billet sont fermés.

 
Ajouter un commentaire

Les commentaires pour ce billet sont fermés.