This document discusses validation in Symfony, including:
1. Validation allows specifying rules (constraints) that data must follow to be valid, such as ensuring a field is not empty.
2. Constraints are PHP objects that make assertions, and the validator service checks if data satisfies all constraints.
3. If validation fails, constraint violations are returned with details on the invalid data.
4. Forms integrate validation using the validator service to check objects and display errors.
5. Constraints can target properties or getters, and validation groups allow validating against selected constraints.
2. Lhassan Baazzi
Web Developper #php #Symfony2 at VOID
http://twitter.com/baazzi
http://www.facebook.com/jBinfo
http://plus.google.com/113667438028898816639
3.
4. $0 Summary
$1- Why ?
$2- Goal
$3- How ?
$4- What is a constraint ?
$5- Basic validation example
$6- Supported constraints
$7- The validator service
$8- Validation and Forms
$9- Translation constraint messages
$10- Constraint targets
$11- Validation groups
$12- Validating values
$13- How to create a custom validation constraint ?
6. $1 Why ?
1. Validation is a very common task in web
applications.
2. Data entered in forms needs to be
validated.
3. Data also needs to be validated before it
is written into a database or passed to a
web service.
7. $2 Goal
The goal of validation is
to tell you whether or not
the data of an object is
valid.
8. $3 How ?
configure a list of rules (called constraints)
that the object must follow in order to be
valid.
These constraints can be specified via a
number of different formats (YAML, XML,
annotations, or PHP).
9. $4 Constraint
a constraint is simply a PHP object that
makes an assertive statement.
10. $5 Basic validation example
For example, to guarantee that the $name property is not
empty:
11. $5 Basic validation example
For example, to guarantee that the $name property is not
empty:
Imports constraints
namespace
Add NotBlank
constraint
12. $5 Basic validation example
The Symfony2 validator is enabled by default, but you must
explicitly enable annotations if you're using the annotation
method to specify your constraints:
13. $6 Supported constraints
Basic Constraints String Constraints Collection Constraints
NotBlank Email Choice
Blank MinLength Collection
NotNull MaxLength UniqueEntity
Null Url Language
True Regex Locale
False Ip Country
Type
Number Constraints Date Constraints File Constraints Other Constraints
Max Date File Callback
Min DateTime Image All
Time Valid
14. $6 Supported constraints
Basic Constraints String Constraints Collection Constraints
NotBlank Email Choice
Blank MinLength Collection
NotNull MaxLength UniqueEntity
Null Url Language
True Regex Locale
False Ip Country
Type
Number Constraints Date Constraints File Constraints Other Constraints
Max Date File Callback
Min DateTime Image All
Time Valid
15. $7 The validator service
To validate an object, use the
validate method on the validator service.
16. $7 The validator service
The job of the validator:
Is to read the constraints (i.e. rules) of a
class and verify whether or not the data
on the object satisfies those constraints.
If validation fails, an array of errors is
returned.
18. $7 The validator service
Each validation error (called a
constraint violation), is represented
by a ConstraintViolation object.
ConstraintViolation: http://api.symfony.com/2.0/Symfony/Component/Validator/ConstraintViolation.html
19. $8 Validation and Forms
Symfony's form library uses the
validator service internally to
validate the underlying object after
values have been submitted and
bound.
20. $8 Validation and Forms
The constraint violations on the
object are converted into FieldError
objects that can easily be displayed
with your form.
22. $9 Translating constraint messages
Create a translation file under the
validators catalog for the constraint
messages, typically in the
Resources/translations/ directory of
the bundle.
24. $10 Constraint targets
Constraints can be applied to
a class property (e.g. name)
or a public getter method
(e.g. getFullName)
25. $10 Constraint targets
Properties:
The validator service allows you to validate private, protected or public
properties.
The example below shows you how to configure the $firstName property
of an Author class to have at least 3 characters:
26. $10 Constraint targets
Getters:
Constraints can also be applied to the return value of a
method.
Validator service allows you to add a constraint to any public
method whose name starts with “get” or “is”. In this guide,
both of these types of methods are referred to as “getters”.
28. $10 Constraint targets
Some constraints apply to the entire class being
validated.
For example, the Callback constraint is a generic
constraint that's applied to the class itself. When that
class is validated, methods specified by that constraint
are simply executed so that each can provide more
custom validation.
30. $11 Validation groups
Answer:
Organize each constraint into one
or more “validation groups”, and
then apply validation against just
one or more group of constraints.
31. $11 Validation groups
Example:
Suppose you have a User class,
which is used both when a user
registers and when a user updates
his/her contact information later:
33. $11 Validation groups
With this configuration, there are two validation
groups:
default: contains the constraints not
assigned to any other group;
registration: contains the constraints on the
email and password fields only.
34. $11 Validation groups
To tell the validator to use a specific group, pass
one or more group names as the second
argument to the validate() method:
36. $12 Validating values
you've seen how you can validate
entire objects. But sometimes, you
just want to validate a simple value -
like to verify that a string is a valid
email address.
37. $12 Validating values
verify that a string is a valid email address:
Import constraint Email
Create the consraint
Assigned the error message
Execute
Check for errors
38. How to create a custom validation
$13 constraint ?
http://symfony.com/doc/current/cookbook/
validation/custom_constraint.html