7 * deprecated `Tests\Constraints\AbstractContraintValidatorTest` in favor of `Test\ConstraintValidatorTestCase`
12 * deprecated `DateTimeValidator::PATTERN` constant
13 * added a `format` option to the `DateTime` constraint
18 * added the BIC (SWIFT-Code) validator
23 * deprecated `DefaultTranslator` in favor of `Symfony\Component\Translation\IdentityTranslator`
24 * deprecated PHP7-incompatible constraints (Null, True, False) and related validators (NullValidator, TrueValidator, FalseValidator) in favor of their `Is`-prefixed equivalent
29 * [BC BREAK] `FileValidator` disallow empty files
30 * [BC BREAK] `UserPasswordValidator` source message change
31 * [BC BREAK] added internal `ExecutionContextInterface::setConstraint()`
32 * added `ConstraintViolation::getConstraint()`
33 * [BC BREAK] The `ExpressionValidator` will now evaluate the Expression even when the property value is null or an empty string
34 * deprecated `ClassMetadata::hasMemberMetadatas()`
35 * deprecated `ClassMetadata::getMemberMetadatas()`
36 * deprecated `ClassMetadata::addMemberMetadata()`
37 * [BC BREAK] added `Mapping\MetadataInterface::getConstraints()`
38 * added generic "payload" option to all constraints for attaching domain-specific data
39 * [BC BREAK] added `ConstraintViolationBuilderInterface::setCause()`
44 * deprecated `ApcCache` in favor of `DoctrineCache`
45 * added `DoctrineCache` to adapt any Doctrine cache
46 * `GroupSequence` now implements `ArrayAccess`, `Countable` and `Traversable`
47 * [BC BREAK] changed `ClassMetadata::getGroupSequence()` to return a `GroupSequence` instance instead of an array
48 * `Callback` can now be put onto properties (useful when you pass a closure to the constraint)
49 * deprecated `ClassBasedInterface`
50 * deprecated `MetadataInterface`
51 * deprecated `PropertyMetadataInterface`
52 * deprecated `PropertyMetadataContainerInterface`
53 * deprecated `Mapping\ElementMetadata`
54 * added `Mapping\MetadataInterface`
55 * added `Mapping\ClassMetadataInterface`
56 * added `Mapping\PropertyMetadataInterface`
57 * added `Mapping\GenericMetadata`
58 * added `Mapping\CascadingStrategy`
59 * added `Mapping\TraversalStrategy`
60 * deprecated `Mapping\ClassMetadata::accept()`
61 * deprecated `Mapping\MemberMetadata::accept()`
62 * removed array type hint of `Mapping\ClassMetadata::setGroupSequence()`
63 * deprecated `MetadataFactoryInterface`
64 * deprecated `Mapping\BlackholeMetadataFactory`
65 * deprecated `Mapping\ClassMetadataFactory`
66 * added `Mapping\Factory\MetadataFactoryInterface`
67 * added `Mapping\Factory\BlackHoleMetadataFactory`
68 * added `Mapping\Factory\LazyLoadingMetadataFactory`
69 * deprecated `ExecutionContextInterface`
70 * deprecated `ExecutionContext`
71 * deprecated `GlobalExecutionContextInterface`
72 * added `Context\ExecutionContextInterface`
73 * added `Context\ExecutionContext`
74 * added `Context\ExecutionContextFactoryInterface`
75 * added `Context\ExecutionContextFactory`
76 * deprecated `ValidatorInterface`
77 * deprecated `Validator`
78 * deprecated `ValidationVisitorInterface`
79 * deprecated `ValidationVisitor`
80 * added `Validator\ValidatorInterface`
81 * added `Validator\RecursiveValidator`
82 * added `Validator\ContextualValidatorInterface`
83 * added `Validator\RecursiveContextualValidator`
84 * added `Violation\ConstraintViolationBuilderInterface`
85 * added `Violation\ConstraintViolationBuilder`
86 * added `ConstraintViolation::getParameters()`
87 * added `ConstraintViolation::getPlural()`
88 * added `Constraints\Traverse`
89 * deprecated `$deep` property in `Constraints\Valid`
90 * added `ValidatorBuilderInterface::setApiVersion()`
91 * added `Validation::API_VERSION_2_4`
92 * added `Validation::API_VERSION_2_5`
93 * added `Exception\OutOfBoundsException`
94 * added `Exception\UnsupportedMetadataException`
95 * made `Exception\ValidatorException` extend `Exception\RuntimeException`
96 * added `Util\PropertyPath`
97 * made the PropertyAccess component an optional dependency
98 * deprecated `ValidatorBuilder::setPropertyAccessor()`
99 * deprecated `validate` and `validateValue` on `Validator\Context\ExecutionContext` use `getValidator()` together with `inContext()` instead
104 * added a constraint the uses the expression language
105 * added `minRatio`, `maxRatio`, `allowSquare`, `allowLandscape`, and `allowPortrait` to Image validator
110 * fixed compatibility with PHP7 and up by introducing new constraints (IsNull, IsTrue, IsFalse) and related validators (IsNullValidator, IsTrueValidator, IsFalseValidator)
115 * added the ISBN, ISSN, and IBAN validators
116 * copied the constraints `Optional` and `Required` to the
117 `Symfony\Component\Validator\Constraints\` namespace and deprecated the original
119 * added comparison validators (EqualTo, NotEqualTo, LessThan, LessThanOrEqualTo, GreaterThan, GreaterThanOrEqualTo, IdenticalTo, NotIdenticalTo)
124 * added a CardScheme validator
125 * added a Luhn validator
126 * moved @api-tags from `Validator` to `ValidatorInterface`
127 * moved @api-tags from `ConstraintViolation` to the new `ConstraintViolationInterface`
128 * moved @api-tags from `ConstraintViolationList` to the new `ConstraintViolationListInterface`
129 * moved @api-tags from `ExecutionContext` to the new `ExecutionContextInterface`
130 * [BC BREAK] `ConstraintValidatorInterface::initialize` is now type hinted against `ExecutionContextInterface` instead of `ExecutionContext`
131 * [BC BREAK] changed the visibility of the properties in `Validator` from protected to private
132 * deprecated `ClassMetadataFactoryInterface` in favor of the new `MetadataFactoryInterface`
133 * deprecated `ClassMetadataFactory::getClassMetadata` in favor of `getMetadataFor`
134 * created `MetadataInterface`, `PropertyMetadataInterface`, `ClassBasedInterface` and `PropertyMetadataContainerInterface`
135 * deprecated `GraphWalker` in favor of the new `ValidationVisitorInterface`
136 * deprecated `ExecutionContext::addViolationAtPath`
137 * deprecated `ExecutionContext::addViolationAtSubPath` in favor of `ExecutionContextInterface::addViolationAt`
138 * deprecated `ExecutionContext::getCurrentClass` in favor of `ExecutionContextInterface::getClassName`
139 * deprecated `ExecutionContext::getCurrentProperty` in favor of `ExecutionContextInterface::getPropertyName`
140 * deprecated `ExecutionContext::getCurrentValue` in favor of `ExecutionContextInterface::getValue`
141 * deprecated `ExecutionContext::getGraphWalker` in favor of `ExecutionContextInterface::validate` and `ExecutionContextInterface::validateValue`
142 * improved `ValidatorInterface::validateValue` to accept arrays of constraints
143 * changed `ValidatorInterface::getMetadataFactory` to return a `MetadataFactoryInterface` instead of a `ClassMetadataFactoryInterface`
144 * removed `ClassMetadataFactoryInterface` type hint from `ValidatorBuilderInterface::setMetadataFactory`.
145 As of Symfony 2.3, this method will be typed against `MetadataFactoryInterface` instead.
146 * [BC BREAK] the switches `traverse` and `deep` in the `Valid` constraint and in `GraphWalker::walkReference`
147 are ignored for arrays now. Arrays are always traversed recursively.
148 * added dependency to Translation component
149 * violation messages are now translated with a TranslatorInterface implementation
150 * [BC BREAK] inserted argument `$message` in the constructor of `ConstraintViolation`
151 * [BC BREAK] inserted arguments `$translator` and `$translationDomain` in the constructor of `ExecutionContext`
152 * [BC BREAK] inserted arguments `$translator` and `$translationDomain` in the constructor of `GraphWalker`
153 * [BC BREAK] inserted arguments `$translator` and `$translationDomain` in the constructor of `ValidationVisitor`
154 * [BC BREAK] inserted arguments `$translator` and `$translationDomain` in the constructor of `Validator`
155 * [BC BREAK] added `setTranslator()` and `setTranslationDomain()` to `ValidatorBuilderInterface`
156 * improved the Validator to support pluralized messages by default
157 * [BC BREAK] changed the source of all pluralized messages in the translation files to the pluralized version
158 * added ExceptionInterface, BadMethodCallException and InvalidArgumentException
163 * added support for `ctype_*` assertions in `TypeValidator`
164 * improved the ImageValidator with min width, max width, min height, and max height constraints
165 * added support for MIME with wildcard in FileValidator
166 * changed Collection validator to add "missing" and "extra" errors to
168 * changed default value for `extraFieldsMessage` and `missingFieldsMessage`
169 in Collection constraint
170 * made ExecutionContext immutable
171 * deprecated Constraint methods `setMessage`, `getMessageTemplate` and
172 `getMessageParameters`
173 * added support for dynamic group sequences with the GroupSequenceProvider pattern
174 * [BC BREAK] ConstraintValidatorInterface method `isValid` has been renamed to
175 `validate`, its return value was dropped. ConstraintValidator still contains
177 * [BC BREAK] collections in fields annotated with `Valid` are not traversed
178 recursively anymore by default. `Valid` contains a new property `deep`
179 which enables the BC behavior.
180 * added Count constraint
181 * added Length constraint
182 * added Range constraint
183 * deprecated the Min and Max constraints
184 * deprecated the MinLength and MaxLength constraints
185 * added Validation and ValidatorBuilderInterface
186 * deprecated ValidatorContext, ValidatorContextInterface and ValidatorFactory