Embed Size (px)
Transcript of Symfony2 validation
- 1. Production agency specializing in WebPHP framework www.symfony.comDevelopment www.void.fr
2. Lhassan BaazziWeb Developper #php #Symfony2 at VOIDhttp://twitter.com/baazzihttp://www.facebook.com/jBinfohttp://plus.google.com/113667438028898816639 3. $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 ? 4. $1 Why ?Dont TrustUser Input 5. $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. 6. $2 GoalThe goal of validation is to tell you whether or not the data of an object isvalid. 7. $3 How ? configure a list of rules (called constraints)that the object must follow in order to bevalid.These constraints can be specified via a number of different formats (YAML, XML,annotations, or PHP). 8. $4 Constrainta constraint is simply a PHP object thatmakes an assertive statement. 9. $5 Basic validation exampleFor example, to guarantee that the $name property is notempty: 10. $5 Basic validation exampleFor example, to guarantee that the $name property is notempty: Imports constraintsnamespaceAdd NotBlank constraint 11. $5 Basic validation example The Symfony2 validator is enabled by default, but you must explicitly enable annotations if youre using the annotation method to specify your constraints: 12. $6 Supported constraintsBasic ConstraintsString Constraints Collection Constraints NotBlank Email Choice Blank MinLength Collection NotNull MaxLength UniqueEntity Null Url Language True Regex Locale False Ip Country TypeNumber Constraints Date Constraints File Constraints Other Constraints Max Date File Callback Min DateTime Image All Time Valid 13. $6 Supported constraintsBasic ConstraintsString Constraints Collection Constraints NotBlank Email Choice Blank MinLength Collection NotNull MaxLength UniqueEntity Null Url Language True Regex Locale False Ip Country TypeNumber Constraints Date Constraints File Constraints Other Constraints Max Date File Callback Min DateTime Image All Time Valid 14. $7 The validator service To validate an object, use the validate method on the validator service. 15. $7 The validator serviceThe 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. 16. $7 The validator service 17. $7 The validator service Each validation error (called aconstraint violation), is representedby a ConstraintViolation object. ConstraintViolation: http://api.symfony.com/2.0/Symfony/Component/Validator/ConstraintViolation.html 18. $8 Validation and Forms Symfonys form library uses thevalidator service internally to validate the underlying object aftervalues have been submitted andbound. 19. $8 Validation and FormsThe constraint violations on the object are converted into FieldError objects that can easily be displayed with your form. 20. $8 Validation and Forms 21. $9 Translating constraint messagesCreate a translation file under the validators catalog for the constraintmessages, typically in the Resources/translations/ directory ofthe bundle. 22. $9 Translating constraint messagesConstraint messageConstraint messageTranslation message 23. $10 Constraint targets Constraints can be applied to a class property (e.g. name)or a public getter method(e.g. getFullName) 24. $10 Constraint targetsProperties:The validator service allows you to validate private, protected or publicproperties.The example below shows you how to configure the $firstName propertyof an Author class to have at least 3 characters: 25. $10 Constraint targetsGetters: 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. 26. $10 Constraint targetsGetters: 27. $10 Constraint targetsSome constraints apply to the entire class beingvalidated.For example, the Callback constraint is a generic constraint thats 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. 28. $11 Validation groupsQuestion: How to validate an object againstonly some of the constraints onthat class ? 29. $11 Validation groupsAnswer: Organize each constraint into one or more validation groups, and then apply validation against just one or more group of constraints. 30. $11 Validation groupsExample:Suppose you have a User class,which is used both when a userregisters and when a user updates his/her contact information later: 31. $11 Validation groups 32. $11 Validation groupsWith this configuration, there are two validationgroups: default: contains the constraints not assigned to any other group; registration: contains the constraints on the email and password fields only. 33. $11 Validation groupsTo tell the validator to use a specific group, passone or more group names as the secondargument to the validate() method: 34. $11 Validation groupsvalidation groups in forms:Controller:Form Class: 35. $12 Validating values youve seen how you can validateentire objects. But sometimes, you just want to validate a simple value - like to verify that a string is a validemail address. 36. $12 Validating valuesverify that a string is a valid email address: Import constraint EmailCreate the consraint Assigned the error message Execute Check for errors 37. How to create a custom validation$13 constraint ?http://symfony.com/doc/current/cookbook/ validation/custom_constraint.html 38. Questions ?