FuelPHP - Validierung

Validationist eine der häufigsten und am häufigsten wiederholten Aufgaben in einer Webanwendung. Der Benutzer gibt die erforderlichen Daten in das Formular ein und übermittelt sie. Anschließend muss die Webanwendung die Daten validieren, bevor die Daten verarbeitet werden. Beispielsweise gibt der Benutzer die Mitarbeiterdaten ein und die post_action muss validiert werden, bevor sie in der Datenbank gespeichert wird. FuelPHP bietet eine wirklich einfache Klasse, Validierung für diesen Zweck.

In FuelPHP ist das Konzept der Validierung sehr einfach und bietet verschiedene Methoden über die Validierungsklasse, um das Formular ordnungsgemäß zu validieren. Es folgt der Workflow der Validierung:

Step 1 - Erstellen Sie ein neues Validierungsobjekt mit forge Methode.

$val = Validation::forge();

Step 2 - Fügen Sie die Felder hinzu, die mit der Methode add validiert werden müssen.

$val->add('name', 'Employee name');

Step 3 - Legen Sie die Validierungsregeln für die hinzugefügten Felder mit fest add_rule Methode.

$val->add('name', 'Employee name')->add_rule('required'); 
$val->add('age', 'Employee age')->add_rule('required') 
   ->add_rule('numeric_min', 20) 
   ->add_rule('numeric_max', 30);

Step 4 - Rufen Sie die run-Methode auf, um die Daten zu validieren.

// run validation on just post 
if ($val->run()) { 
   // success 
} else { 
   // falier 
}

Step 5 - Verwenden Sie validated und error, um die gültigen bzw. ungültigen Felder abzurufen.

$vars = $val->validated(); 
$vars = $val->error();

Regeln

FuelPHP enthält viele zu validierende Regeln und bietet auch die Möglichkeit, neue Regeln zu erstellen. Die von der Validierungsklasse unterstützten Regeln lauten wie folgt:

  • required - einzugebender Wert

  • required_with- Legen Sie ein anderes Feld als Begleitfeld fest. Wenn das Feld festgelegt ist, müssen auch Begleitfelder festgelegt werden

  • match_value - Stellen Sie den Wert ein, der mit dem Feldwert übereinstimmen soll

  • match_pattern - Legen Sie den Wert fest, der als regulärer Ausdruck mit dem Feldwert abgeglichen werden soll

  • match_field - Legen Sie den Wert eines anderen Felds als Wert fest, der mit dem Feldwert übereinstimmt

  • match_collection - Legen Sie den Wert fest, der als Sammlung mit dem Feldwert abgeglichen werden soll

  • min_length - Stellen Sie die Mindestlänge des Feldwerts ein

  • max_length - Legen Sie die maximale Länge des Feldwerts fest

  • exact_length - Stellen Sie die genaue Länge des Feldwerts ein

  • valid_date - Setzen Sie den Feldwert auf ein gültiges Datum

  • valid_email - Setzen Sie den Wert des Feldes auf eine gültige E-Mail

  • valid_emails - Setzen Sie den Wert des Feldes auf gültige E-Mails, die durch Kommas getrennt sind

  • valid_url - Setzen Sie den Feldwert auf eine gültige URL

  • valid_ip - Setzen Sie den Feldwert auf eine gültige IP

  • numeric_min - Stellen Sie den Mindestwert des Feldwerts ein

  • numeric_max - Stellen Sie den Maximalwert des Feldwerts ein

  • numeric_between - Stellen Sie den minimalen und maximalen Wert des Feldwerts ein

  • valid_string - Ähnlich wie Regex, aber einfacher

$val->add('username', 'User name')->add_rule('valid_string', array('alpha, dots');

Hier bezieht sich Alpha auf alphabetische Zeichen und Punkte auf (.). Die gültige Zeichenfolge ist nur die Zeichenfolge, die das alphabetische Zeichen und (.) Enthält. Die anderen Optionen sind Groß-, Klein-, Sonder-, Zahlen-, Leerzeichen usw.

Arbeitsbeispiel

Wir können die Funktion zum Hinzufügen von Mitarbeitern aktualisieren, um die Validierung einzuschließen. Aktualisieren Sie einfach diepost_add Methode des Mitarbeiter-Controllers wie folgt.

public function post_add() { 
   $val = Validation::forge(); 
   $val->add('name', 'Employee name')->add_rule('required'); 
   $val->add('age', 'Employee age')->add_rule('required')
      ->add_rule('numeric_min', 20) 
      ->add_rule('numeric_max', 30);  
   
   if ($val->run()) { 
      $name = Input::post('name'); 
      $age = Input::post('age');  
      $model = new model_employee(); 
      $model->name = $name; 
      $model->age = $age; 
      $model->save();  
      Response::redirect('employee/list'); 
   } else { 
      Response::redirect('employee/add'); 
   } 
}

Hier haben wir die angegeben nameund Alter als die erforderlichen Felder. Dasagemuss zwischen 20 und 30 liegen. Wenn beide Regeln gültig sind, werden die Mitarbeiterdaten gespeichert und auf die Mitarbeiterlistenseite umgeleitet. Andernfalls werden Mitarbeiterdaten abgelehnt und zum Hinzufügen einer Mitarbeiterseite umgeleitet.