How to Validate Raw Values (Scalar Values and Arrays)
Warning: You are browsing the documentation for Symfony 2.x, which is no longer maintained.
Read the updated version of this page for Symfony 7.1 (the current stable version).
Usually you will be validating entire objects. But sometimes, you just want to validate a simple value - like to verify that a string is a valid email address. This is actually pretty easy to do. From inside a controller, it looks like this:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
// ...
use Symfony\Component\Validator\Constraints as Assert;
// ...
public function addEmailAction($email)
{
$emailConstraint = new Assert\Email();
// all constraint "options" can be set this way
$emailConstraint->message = 'Invalid email address';
// use the validator to validate the value
// If you're using the new 2.5 validation API (you probably are!)
$errors = $this->get('validator')->validate(
$email,
$emailConstraint
);
// If you're using the old 2.4 validation API
/*
$errors = $this->get('validator')->validateValue(
$email,
$emailConstraint
);
*/
if (0 === count($errors)) {
// ... this IS a valid email address, do something
} else {
// this is *not* a valid email address
$errorMessage = $errors[0]->getMessage();
// ... do something with the error
}
// ...
}
By calling validate()
on the validator, you can pass in a raw value and
the constraint object that you want to validate that value against. A full
list of the available constraints - as well as the full class name for each
constraint - is available in the constraints reference
section.
Validation of arrays is possible using the Collection
constraint:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
use Symfony\Component\Validator\Validation;
use Symfony\Component\Validator\Constraints as Assert;
$validator = Validation::createValidator();
$constraint = new Assert\Collection(array(
// the keys correspond to the keys in the input array
'name' => new Assert\Collection(array(
'first_name' => new Assert\Length(array('min' => 101)),
'last_name' => new Assert\Length(array('min' => 1)),
)),
'email' => new Assert\Email(),
'simple' => new Assert\Length(array('min' => 102)),
'gender' => new Assert\Choice(array(3, 4)),
'file' => new Assert\File(),
'password' => new Assert\Length(array('min' => 60)),
));
$violations = $validator->validate($input, $constraint);
The validate()
method returns a ConstraintViolationList
object, which acts just like an array of errors. Each error in the collection
is a ConstraintViolation object,
which holds the error message on its getMessage()
method.