Validateur de formulaire

Soyez le premier à donner votre avis sur cette source.

Vue 10 249 fois - Téléchargée 2 098 fois

Description

J'ai codé cet ensemble de classes pour accélérer la création de formulaire sans l'alourdir avec une classe la plus simple possible d'utilisation.
J'ai voulu séparer l'aspect traitement de formulaire du display c'est pourquoi il n'y a pas de génération de widget ; Elle ne fait que contrôler les variables, les formater, générer les messages d'erreurs.

A noter que la librairie peut s'utiliser en dehors d'un formulaire pour contrôler les variables en GET par exemple. Il s'agit donc bien d'un contrôleur de variables et pas de formulaire.

Source / Exemple :


<?php
// VarChecker test les variables http
$form = new VarChecker();

// si le formulaire est posté
if($form->hasPost()){

  // definitions des regles du formulaire
  $test_form = array();
  $test_form['int']     = array('title' => 'Champ 1', 'filter' => VarFilter::VF_INT, 'nn' => true);
  $test_form['string']   = array('title' => 'Champ 2', 'filter' => VarFilter::VF_STRING, 'nn' => true, 'date_past' => 'd/m/y');
  $test_form['bool']     = array('title' => 'Champ 3', 'filter' => VarFilter::VF_BOOL, 'nn' => true);
  $test_form['html']     = array('title' => 'Champ 4', 'filter' => VarFilter::VF_HTML, 'min' => 3, 'max' => 100);
  $test_form['float']   = array('title' => 'Champ 5', 'filter' => VarFilter::VF_FLOAT, 'vmin' => 10, 'vmax' => 100);
  $test_form['alphanum']   = array('title' => 'Champ 6', 'filter' => VarFilter::VF_ALPHANUM, 'min' => 3, 'max' => 100);

  if($form->isValid($test_form)){
    // traitement OK ici
    echo '<br/> formulaire valide';
  }
  else{
    // traitement NOK ici : exemple afficher les messages d'erreur
    echo '<br/> formulaire invalide';
    echo '<ul class="error_msg">';
    foreach($form->errorMessage as $message){
      echo '<li>',$message,'</li>';
    }
    echo '</ul>';
  }
}
?>

<!-- le formulaire -->
<form method="POST">
Champ 1 (int)<br/>
<input type="text" value="<?php echo $form->int; ?>" name="int" <?=($form->isError('int'))?'class="error"':'';?> /><br/>
Champ 2 (string)<br/>
<input type="text" value="<?php echo $form->string; ?>" name="string" <?=($form->isError('string'))?'class="error"':'';?> />(jj/mm/aaaa)<br/>
Champ 3 (bool)<br/>
<input type="checkbox" name="bool" value="1" <?=($form->bool)?'checked="CHECKED"':'';?>  <?=($form->isError('bool'))?'class="error"':'';?> /><br/>
Champ 4 (html)<br/>
<input type="text" value="<?php echo $form->html; ?>" name="html" <?=($form->isError('html'))?'class="error"':'';?> /><br/>
Champ 5 (float)<br/>
<input type="text" value="<?php echo $form->float; ?>" name="float" <?=($form->isError('float'))?'class="error"':'';?> /><br/>
Champ 6 (alphanum)<br/>
<input type="text" value="<?php echo $form->alphanum; ?>" name="alphanum" <?=($form->isError('alphanum'))?'class="error"':'';?> /><br/>
<p><input type="submit" value="Tester"></p>
</form>

Conclusion :


N'hésitez pas à tester, adapter et faire des retours

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
43
Date d'inscription
lundi 3 octobre 2011
Statut
Membre
Dernière intervention
26 février 2014

"mettrai tout à la racine d'un dossier si ça te semble trop compliqué."

Rien n'est compliqué.

Juste que ar habitude, je met toujours une architecture basique pour les projets open-source.

Tu copies le fichier dans le dossier que tu veux par la suite, mais c'est plus clair pour le visiteur, t'as une vue globale sur tout ..

+ un mauvais souvenir de linux qui me demande "remplacer le dossier" et moi qui répond "oui" (je pensais que ça allait les fusionner, mais en fait il n'a gardé que le dernier fichier, celui copié)

++ ;)

Et aussi, pour HTML5 : http://modernizr.com/

(HTML5 dans le client, ou si trop ancien : javascript =))
Messages postés
14
Date d'inscription
mercredi 27 octobre 2010
Statut
Membre
Dernière intervention
27 mai 2013

@PunKeel : Merci pour l'info, ZebraForm a l'air pas mal par contre c'est un peu différent dans le sens ou c'est vraiment axé formulaire et ça génère le html.
Ma lib est plus ouverte car je l'utilise pour toutes mes variables http et ne génére pas le form (plus pratique quand c'est une autre personne qui réalise l'intégration)
En plus dans l'optique de s'adresser à des débutants, je trouve ma classe un peu plus simple d'utilisation.

Par contre, concernant ta remarque sur l'architecture des dossiers... la lib comporte 5 classes : le gars qui veut les utiliser les met ou il veut. Je n'impose aucune architecture.
Moi j'ai récupéré plusieurs sources ici et je les ai toujours adapté à mon arborescence, il n'y a pas besoin d'être gourou PHP pour bouger des fichiers. Mais La prochaine fois je mettrai tout à la racine d'un dossier si ça te semble trop compliqué.
Messages postés
43
Date d'inscription
lundi 3 octobre 2011
Statut
Membre
Dernière intervention
26 février 2014

Il y a une lib JS qui permet le support de HTML5 :)
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
14
@PunKeel : HTML5 est loin d'être supporté partout.
FF14 : http://imageshack.us/photo/my-images/802/html5ff14.png/
Par contre, ZebraForm a l'air très intéressante !
Messages postés
43
Date d'inscription
lundi 3 octobre 2011
Statut
Membre
Dernière intervention
26 février 2014

HTML5 propose la validation client.

ZebraForm propose aussi validation client/serveur, et est plus léger que ta source.

Je trouve ton architecture de dossiers ... lourde ... et peu adaptable aux sites pré-existants.

Après, pour tes projets, c'est surement génial, car tu y es habitué ...
Afficher les 8 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.