title |
---|
The validator object |
This is the class that will be instantiated to perform validation
use Sirius\Validation\RuleFactory;
use Sirius\Validation\ErrorMessage;
use Sirius\Validation\Validator;
$ruleFactory = new RuleFactory;
$errorMessagePrototype = new ErrorMessage;
$validator = new Validator($ruleFactory, $errorMessagePrototype);
$validatorFactory
and $errorMessagePrototype
are optional, they have a default value.
See RuleFactory and ErrorMessage for details
These are just instructions for the RuleFactory to create the actual rules
// syntax
$validator->add($selector, $name = null, $options = null, $messageTemplate = null, $label = null);
// examples
$validator->add('username', 'required');
$validator->add('password', 'minLength', ['min' => 6];, '{label} must have at least {min} characters', 'Password');
$validator->add('additional_emails[*]', 'email', array(), 'Email address is not valid');
Be sure to check the syntactic sugar options to reduce the verbosity.
Is the path to the value(s) that will be validated with the rule
The $name
must either:
- the name of a rule registered with the
RuleFactory
- the name of a class within the
Sirius\Validation\Rule
namespace (eg: `Email', 'MinLength') - the name of a class that extends the
Sirius\Vaidation\Rule\AbstractRule
class - a callable entity (function, object method or static method) (eg:
$validator->add('username', 'MyClass::validateUsername', null, 'Username is already taken')
).
The $options
variable represents the configuration options for the validators or additional parameters for the callback. It can be:
- an array
- a JSON string:
{"min": 100, "max": 200}
- a URL query string:
min=100&max=200
- a CSV string:
100,200
(this requires the validation rule class has theoptionsIndexMap
array properly set up)
The $messageTemplate
is the message that will be associated with an item when the validation fails.
Each validator has it's own default error message so you don't have to provide it.
The $label
is the label associated with the field.
The most useful error messages are those that contain the name of the field so this will come very handy.
$validationResult = $validator->validate($_POST); // TRUE or FALSE
$messages = $validator->getMessages(); // array with all error messages
$emailErrorMessages = $validator->getMessages('email'); // error messages for the email address
If for whatever reason you need to manually set error messages you can do it like so
$validator->addMessage('email', 'This value should be an email address');
and clear them
$validator->clearMessages();
Anytime you execute $validator->validate($values)
the validation messages are cleared (even those set manually).