diff --git a/book/validation.rst b/book/validation.rst index 70d21eec5be..0fa52c724f9 100644 --- a/book/validation.rst +++ b/book/validation.rst @@ -35,7 +35,7 @@ application. The goal of validation is to tell you if the data of an object is valid. For this to work, you'll configure a list of rules (called :ref:`constraints `) that the object must follow in order to be valid. These rules can be specified via a number of -different formats (YAML, XML, annotations, or PHP). +different formats (annotations, YAML, XML or PHP). For example, to guarantee that the ``$name`` property is not empty, add the following: @@ -71,7 +71,8 @@ following: + xsi:schemaLocation="http://symfony.com/schema/dic/constraint-mapping + http://symfony.com/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd"> @@ -271,8 +272,10 @@ annotations if you're using the annotation method to specify your constraints: + xsi:schemaLocation="http://symfony.com/schema/dic/services + http://symfony.com/schema/dic/services/services-1.0.xsd + http://symfony.com/schema/dic/symfony + http://symfony.com/schema/dic/symfony/symfony-1.0.xsd"> @@ -338,7 +341,9 @@ constraint, have several configuration options available. Suppose that the Acme\BlogBundle\Entity\Author: properties: gender: - - Choice: { choices: [male, female], message: Choose a valid gender. } + - Choice: + choices: [male, female] + message: Choose a valid gender. .. code-block:: php-annotations @@ -362,7 +367,8 @@ constraint, have several configuration options available. Suppose that the + xsi:schemaLocation="http://symfony.com/schema/dic/constraint-mapping + http://symfony.com/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd"> @@ -391,10 +397,13 @@ constraint, have several configuration options available. Suppose that the public static function loadValidatorMetadata(ClassMetadata $metadata) { - $metadata->addPropertyConstraint('gender', new Choice(array( - 'choices' => array('male', 'female'), - 'message' => 'Choose a valid gender.', - ))); + $metadata->addPropertyConstraint( + 'gender', + new Choice(array( + 'choices' => array('male', 'female'), + 'message' => 'Choose a valid gender.', + )) + ); } } @@ -436,7 +445,8 @@ options can be specified in this way. + xsi:schemaLocation="http://symfony.com/schema/dic/constraint-mapping + http://symfony.com/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd"> @@ -476,7 +486,9 @@ If you're ever unsure of how to specify an option, either check the API document for the constraint or play it safe by always passing in an array of options (the first method shown above). -Translation Constraint Messages +.. _translation-constraint-messages: + +Translating Constraint Messages ------------------------------- For information on translating the constraint messages, see @@ -541,7 +553,8 @@ class to have at least 3 characters. + xsi:schemaLocation="http://symfony.com/schema/dic/constraint-mapping + http://symfony.com/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd"> @@ -568,7 +581,10 @@ class to have at least 3 characters. public static function loadValidatorMetadata(ClassMetadata $metadata) { - $metadata->addPropertyConstraint('firstName', new NotBlank()); + $metadata->addPropertyConstraint( + 'firstName', + new NotBlank() + ); $metadata->addPropertyConstraint( 'firstName', new Length(array("min" => 3))); @@ -626,7 +642,8 @@ this method must return ``true``: + xsi:schemaLocation="http://symfony.com/schema/dic/constraint-mapping + http://symfony.com/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd"> @@ -649,9 +666,12 @@ this method must return ``true``: { public static function loadValidatorMetadata(ClassMetadata $metadata) { - $metadata->addGetterConstraint('passwordLegal', new True(array( - 'message' => 'The password cannot match your first name', - ))); + $metadata->addGetterConstraint( + 'passwordLegal', + new True(array( + 'message' => 'The password cannot match your first name', + )) + ); } } @@ -744,7 +764,8 @@ user registers and when a user updates their contact information later: + xsi:schemaLocation="http://symfony.com/schema/dic/constraint-mapping + http://symfony.com/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd"> @@ -769,7 +790,7 @@ user registers and when a user updates their contact information later: - + @@ -789,21 +810,33 @@ user registers and when a user updates their contact information later: { public static function loadValidatorMetadata(ClassMetadata $metadata) { - $metadata->addPropertyConstraint('email', new Email(array( - 'groups' => array('registration'), - ))); - - $metadata->addPropertyConstraint('password', new NotBlank(array( - 'groups' => array('registration'), - ))); - $metadata->addPropertyConstraint('password', new Length(array( - 'min' => 7, - 'groups' => array('registration') - ))); + $metadata->addPropertyConstraint( + 'email', + new Email(array( + 'groups' => array('registration'), + )) + ); + + $metadata->addPropertyConstraint( + 'password', + new NotBlank(array( + 'groups' => array('registration'), + )) + ); + $metadata->addPropertyConstraint( + 'password', + new Length(array( + 'min' => 7, + 'groups' => array('registration'), + )) + ); $metadata->addPropertyConstraint( 'city', - Length(array("min" => 3))); + new Length(array( + 'min' => 2, + )) + ); } } @@ -919,7 +952,10 @@ username and the password are different only if all other validation passes private $password; /** - * @Assert\True(message="The password cannot match your username", groups={"Strict"}) + * @Assert\True( + * message="The password cannot match your username", + * groups={"Strict"} + * ) */ public function isPasswordLegal() { @@ -933,7 +969,8 @@ username and the password are different only if all other validation passes + xsi:schemaLocation="http://symfony.com/schema/dic/constraint-mapping + http://symfony.com/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd"> @@ -962,10 +999,11 @@ username and the password are different only if all other validation passes // src/Acme/BlogBundle/Entity/User.php namespace Acme\BlogBundle\Entity; + use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Component\Validator\Mapping\ClassMetadata; use Symfony\Component\Validator\Constraints as Assert; - class User + class User implements UserInterface { public static function loadValidatorMetadata(ClassMetadata $metadata) { @@ -1062,7 +1100,8 @@ entity and a new constraint group called ``Premium``: + xsi:schemaLocation="http://symfony.com/schema/dic/constraint-mapping + http://symfony.com/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd"> @@ -1100,10 +1139,13 @@ entity and a new constraint group called ``Premium``: public static function loadValidatorMetadata(ClassMetadata $metadata) { $metadata->addPropertyConstraint('name', new Assert\NotBlank()); - $metadata->addPropertyConstraint('creditCard', new Assert\CardScheme( - 'schemes' => array('VISA'), - 'groups' => array('Premium'), - )); + $metadata->addPropertyConstraint( + 'creditCard', + new Assert\CardScheme(array( + 'schemes' => array('VISA'), + 'groups' => array('Premium'), + )) + ); } } @@ -1206,6 +1248,7 @@ email address. This is actually pretty easy to do. From inside a controller, it looks like this:: use Symfony\Component\Validator\Constraints\Email; + // ... public function addEmailAction($email)