Validateur de formulaire

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

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.