Validator & Validity classes
- Home
- Creating forms
- Validator & Validity classes
The related classes Validator
and Validity
are used for validating submitted form data. The Validator
class provides methods which track which fields have errors, and the Validity
class provides static methods for validating input data according to specific rules. Each Validity
method throws a ValidationException
if the validation fails; and these are handled by the Validator class and put into the session to be displayed with the appropriate fields.
For example:
modules/Example/Controllers/ExampleController.php
// ... public function submitForm() { $_SESSION['example_form'] = [ 'field_values' => Validator::trim($_POST), ]; $valid = new Validator($_POST); $valid->required(['name', 'email']); $valid->check('name', 'Validity::length', 1, 100); $valid->check('email', 'Validity::length', 1, 100); $valid->check('email', 'Validity::email'); $valid->check('phone', 'Validity::phone'); if ($valid->hasErrors()) { $_SESSION['example_form']['field_errors'] = $valid->getFieldErrors(); $valid->createNotifications(); Url::redirect('example/form'); } $new_person = [ 'name' => $_POST['name'], 'email' => $_POST['email'], 'phone' => $_POST['phone'], ]; Pdb::insert('personal_details', $new_person); Url::redirect('example/success'); }
Custom validation
You can easily create your own class and use it to provide arbitrary field validation, as long as the method throws a ValidationException
when required. For example:
modules/Example/Helpers/ValidityExample.php
class ValidityExample { public static function primeToTwenty($val) { if (!in_array($val, [1, 2, 3, 5, 7, 11, 13, 17])) { throw new ValidationException('Must be a prime number between 1 and 20'); } } }