Skip to content

[Validator] fixed: Expressions always valid for null values #11590

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 559 commits into from

Conversation

tommygnr
Copy link
Contributor

@tommygnr tommygnr commented Aug 6, 2014

Q A
Bug fix? yes
New feature? no
BC breaks? no
Deprecations? no
Tests pass? yes
Fixed tickets
License MIT
Doc PR

The ExpressionValidator was incorrectly skipping validation of null or empty string values.

For example the following was (incorrectly) considered valid if hairColour is null because the validator was skipped

<?php

namespace Acme\DemoBundle\Model\Person;

use Symfony\Component\Validator\Constraints as Assert;

class Person
{
    private $hasHair;

    /**
     * @Assert\Expression(
     *     "!(this.hasHair() and value == null)",
     *     message="If you have hair you must pick its colour!"
     * )
     */
    private $hairColour;
}

fabpot and others added 30 commits June 12, 2014 11:59
…olas-grekas)

This PR was merged into the 2.5 branch.

Discussion
----------

[Debug] work-around https://bugs.php.net/61272

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | symfony#8703
| License       | MIT

https://bugs.php.net/61272 is the real offender.
Using ob_end_flush() instead of ob_end_clean() is the fix.

Commits
-------

cb8aff3 [Debug] work-around https://bugs.php.net/61272
* 2.4:
  Minor doc fix.
  Simplified the way to update PHPUnit to the latest version
  [Process] Minor README update
  [HttpFoundation] Basic auth in url is broken when using PHP CGI/FPM
  Fixed a html error "Element ul is not closed" in logger.html.twig
  [HttpFoundation] Officialize the 308 redirect RFC
  Officialize the 308 redirect RFC
  issue symfony#10808 crawler test
  Empty select with attribute name="foo[]" bug fix
  Fixed contextually wrong translation
* 2.5:
  Minor doc fix.
  Simplified the way to update PHPUnit to the latest version
  [Debug] work-around https://bugs.php.net/61272
  [Debug] simplify code path to remove potential blank pages
  [Process] Minor README update
  [HttpFoundation] Basic auth in url is broken when using PHP CGI/FPM
  Fixed a html error "Element ul is not closed" in logger.html.twig
  [HttpFoundation] Officialize the 308 redirect RFC
  Officialize the 308 redirect RFC
  issue symfony#10808 crawler test
  Empty select with attribute name="foo[]" bug fix
  Fixed contextually wrong translation
Update composer.json to account for symfony#9792
…when uploading an image during functional tests (OwlyCode)

This PR was squashed before being merged into the 2.5 branch (closes symfony#11111).

Discussion
----------

Fixed undefined ImageValidator::$suffices property when uploading an image during functional tests

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | symfony#11110
| License       | MIT
| Doc PR        |

This will make the FileValidator::$suffices attribute protected so ImageValidator or any inherited class can access it. It fixes symfony#11110 in the most simple way possible.

Commits
-------

859f34e Fixed undefined ImageValidator:: property when uploading an image during functional tests
This PR was merged into the 2.5 branch.

Discussion
----------

[HttpKernel] Fix event dispatcher dependency

Update composer.json to account for symfony#9792.

[Symfony\Component\HttpKernel\DependencyInjection\RegisterListenersPass](https://github.com/symfony/symfony/blob/2.5/src/Symfony/Component/HttpKernel/DependencyInjection/RegisterListenersPass.php#L14) extends `Symfony\Component\EventDispatcher\DependencyInjection\RegisterListenersPass` which exists only in 2.5

Commits
-------

3d2dd81 [HttpKernel] Fix event dispatcher dependency
…elds)

This PR was merged into the 2.5-dev branch.

Discussion
----------

[Form] Add allow_extra_fields option on forms

This is specially useful when creating different *nameless* GET forms on the same page (ex: pagination and search).

Commits
-------

c6f3dd6 add allow_extra_fields option
…:append() (jakzal)

This PR was submitted for the master branch but it was merged into the 2.5 branch instead (closes symfony#11117).

Discussion
----------

[Validator] Fix array notation in the PropertyPath::append()

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | related  symfony#11072 symfony#11046 (not fixed yet)
| License       | MIT
| Doc PR        | -

Commits
-------

aa6b08d [Validator] Fix array notation in the PropertyPath::append()
…r (megazoll)

This PR was merged into the 2.3-dev branch.

Discussion
----------

[Validator] Disallow empty file in FileValidator

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | yes
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        | symfony/symfony-docs#3746

Commits
-------

1b253cb Disallow empty file in FileValidator
… (peterjmit)

This PR was merged into the 2.3-dev branch.

Discussion
----------

[HttpFoundation] Added ParameterBag::getBoolean

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

At the moment to pull a boolean value from a request the user has to use `ParameterBag::filter` or use `filter_var` directly

```php
// GET /products?hide_archived=true
$request->query->filter('hide_archived', false, false, FILTER_VALIDATE_BOOLEAN);
// or
filter_var($request->query->get('hide_archived'), FILTER_VALIDATE_BOOLEAN);
```

This is a pure convenience addition, adding a nice way of pulling a boolean value from a query string or request body (especially if http form/url encoded).

Example usage:
```php
// GET /products?hide_archived=true
$request->query->getBoolean('hide_archived'); // (boolean) true
$request->query->get('hide_archived'); // (string) "true"

// GET /products?hide_archived=1
$request->query->getBoolean('hide_archived'); // (boolean) true

// GET /products?hide_archived=false
$request->query->getBoolean('hide_archived'); // (boolean) false

// GET /products?hide_archived=banana
$request->query->getBoolean('hide_archived'); // (boolean) false
```

Commits
-------

36c58f8 [HttpFoundation] Added ParameterBag::getBoolean
…es when output is disabled, simply discard it (romainneutron)

This PR was merged into the 2.5 branch.

Discussion
----------

[2.5][Process] Do not redirect output to file handles when output is disabled, simply discard it

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT

Commits
-------

b35250f [Process] Do not redirect output to file handles when output is disabled
* 2.4:
  PHP Fatal error when getContainer method of ContainerAwareCommand has be...
  [HttpFoundation] Fixed isSecure() check to be compliant with the docs
  Update MimeTypeExtensionGuesser.php
  fix test src/Symfony/Component/HttpFoundation/Tests/BinaryFileResponseTest.php
  Fixed the Travis build on PHP 5.3.3
* 2.5:
  PHP Fatal error when getContainer method of ContainerAwareCommand has be...
  [HttpFoundation] Fixed isSecure() check to be compliant with the docs
  Update MimeTypeExtensionGuesser.php
  fix test src/Symfony/Component/HttpFoundation/Tests/BinaryFileResponseTest.php
  [Process] Do not redirect output to file handles when output is disabled
  [Validator] Fix array notation in the PropertyPath::append()
  Fixed undefined ImageValidator:: property when uploading an image during functional tests
  [HttpKernel] Fix event dispatcher dependency
  Fixed the Travis build on PHP 5.3.3
…ValueExporter (scuben)

This PR was merged into the 2.6-dev branch.

Discussion
----------

[HttpKernel] added value of DateTime object to ValueExporter

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

This will output the actual value of a DateTime object in the form panel of the web debug toolbar.

- [x] gather feedback for my change (thank you stof, its my first contribution to oss)
- [x] finish the code

Commits
-------

a1762fb [HttpKernel] added value of DateTime object and objects implementing DateTimeInterface to ValueExporter
This PR was merged into the 2.6-dev branch.

Discussion
----------

[Debug] generic ErrorHandler

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | minor, see updated tests
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | none
| License       | MIT
| Doc PR        | none

The proposed goal of this PR is to build a class that can serve as a foundation for a standard error handler, shared with other projects and not only used by the FrameworkBundle.

This is a merge of my previous work on the subject (https://github.com/nicolas-grekas/Patchwork-Error-Logger/blob/master/class/Patchwork/PHP/InDepthErrorHandler.php) and recent improvements of error handling in Symfony's Debug\ErrorHandler.

ExceptionHandler has a new AbstractExceptionHandler base class that factors out the handling of fatal errors casted to exceptions.

ErrorHandler is introduced, which provides five bit fields that control how errors are handled:

- thrownErrors: errors thrown as ContextErrorException
- loggedErrors: logged errors, when not @-silenced
- scopedErrors: errors thrown or logged with their local context
- tracedErrors: errors logged with their trace, only once for repeated errors
- screamedErrors: never @-silenced errors

Each error level can be logged by a dedicated PSR-3 logger object.
Screaming only applies to logging.
Throwing takes precedence over logging.
Uncaught exceptions are logged as E_ERROR.
E_DEPRECATED and E_USER_DEPRECATED levels never throw.
E_RECOVERABLE_ERROR and E_USER_ERROR levels always throw.
Non catchable errors that can be detected at shutdown time are logged when the scream bit field allows so.
As errors have a performance cost, repeated errors are all logged, so that the developer
can see them and weight them as more important to fix than others of the same level.

- [x] build a more generic ErrorHandler
- [x] update service/listeners definitions to take advantage of the new interface of ErrorHandler
- [x] add phpdocs
- [x] add tests

Commits
-------

1701447 [Debug] update FrameworkBundle and HttpKernel for new ErrorHandler
839e9ac [Debug] generalized ErrorHandler
…émy Derussé)

This PR was squashed before being merged into the 2.6-dev branch (closes symfony#11027).

Discussion
----------

[Validator] Support "maxSize" given in KiB

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | symfony#10962
| License       | MIT
| Doc PR        | symfony/symfony-docs#3895

To display the constraint validation message with an expected suffix, this PR add a new option in  File constraint.

Commits
-------

48ed754 [Validator] Support "maxSize" given in KiB
…y Derussé)

This PR was squashed before being merged into the 2.6-dev branch (closes symfony#10939).

Discussion
----------

[Translation] [Xliff] Support for <note>

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | symfony#10550
| License       | MIT
| Doc PR        | n/a

The purpose of this PR, is to avoid that the automated translation update (`app/console translation:update`) remove the `note` tags from XLIFF files.

Not sure if using the metadata bag is a good thing or if I should have add a "note" property in MessageCatalogue. What do you think ?

Commits
-------

d18e758 [Translation] [Xliff] Support for <note>
…ainneutron)

This PR was squashed before being merged into the 2.6-dev branch (closes symfony#10934).

Discussion
----------

[Process] Add support for streams as input

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | symfony#8161
| License       | MIT

`Process::setStdin` now accepts a stream as input.
I've also split windows and unix pipes management.

Commits
-------

b57024e [Process] Add support for streams as input
nicolas-grekas and others added 24 commits August 13, 2014 20:41
…s to debug namespace (matthieuauger)

This PR was merged into the 2.6-dev branch.

Discussion
----------

[FrameworkBundle] [TwigBundle] Move debug commands to debug namespace

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT

Instead of having several namespaces with only one debug command (container:debug, event-dispatcher:debug), move all these debug commands to a new **debug** namespace.

Related to symfony#10388 (comment)

I don't how to tag these aliases as deprecated as there are only here for backward compatibility.
The renaming should also be done in the Swiftmailer Bundle.

Commits
-------

fd0e229 Move debug commands to debug namespace
…TokenValid (lyrixx)

This PR was merged into the 2.6-dev branch.

Discussion
----------

[DX] [FrameworkBundle] Added Crontoller::isCsrfTokenValid

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Commits
-------

479c833 [FrameworkBundle] Added Crontoller::isCsrfTokenValid
This PR was merged into the 2.5 branch.

Discussion
----------

fix dependencies on HttpFoundation component

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | symfony#11636
| License       | MIT
| Doc PR        |

The ``closeOutputBuffers()`` method was added to the ``Response`` class of the HttpFoundation in Symfony 2.5. Therefore, parts that are calling this method must depend on ``symfony/http-foundation`` 2.5 or higher.

Commits
-------

fe2f007 fix dependencies on HttpFoundation component
…(lyrixx)

This PR was squashed before being merged into the 2.5 branch (closes symfony#11666).

Discussion
----------

[DIC] Fixed: anonymous services are always private

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        |

This PR fix a regression introduce by symfony@33c91f9#diff-c68f5120ea7d664e07e96cc40bdf6295L268

* First commit is just about CS
* Second commit really fix the regression (see only this diff to easily understand)

ping @sandermarechal @romainneutron

Commits
-------

7f4f9ab [DIC] Fixed: anonymous services are always private
* 2.4:
  [Validator] Backported constraint validator tests from 2.5
  [Validator] Backported constraint validator tests from 2.5
  Fix toolbar vertical alignment.
  [HttpFoundation] MongoDbSessionHandler supports auto expiry via configurable expiry_field
  [FrameworkBundle] add missing attribute to XSD
  Allow basic auth in url. Improve regex. Add tests.
  fix typos and syntax in Profiler controller method comments
  remove volatile tests
  [Console] fixed style creation when providing an unknown tag option
  [Validator] Convert objects to string in comparison validators. Reapplies 6cf5e08
  [HttpFoundation] Update QUERY_STRING when overrideGlobals

Conflicts:
	src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueEntityValidatorTest.php
	src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/full.xml
	src/Symfony/Component/Console/Tests/Formatter/OutputFormatterTest.php
	src/Symfony/Component/Form/Tests/Extension/Validator/Constraints/FormValidatorTest.php
	src/Symfony/Component/Security/Core/Tests/Validator/Constraints/UserPasswordValidatorTest.php
	src/Symfony/Component/Validator/Constraints/AllValidator.php
	src/Symfony/Component/Validator/Constraints/ChoiceValidator.php
	src/Symfony/Component/Validator/Constraints/CollectionValidator.php
	src/Symfony/Component/Validator/Constraints/ExpressionValidator.php
	src/Symfony/Component/Validator/Tests/Constraints/AbstractConstraintValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/AllValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/BlankValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/CallbackValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/CardSchemeValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/ChoiceValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/CollectionValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/CountValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/CountryValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/CurrencyValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/DateTimeValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/DateValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/EmailValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/ExpressionValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/FalseValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/FileValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/GroupSequenceTest.php
	src/Symfony/Component/Validator/Tests/Constraints/IbanValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/ImageValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/IpValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/IsbnValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/IssnValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/LanguageValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/LengthValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/LocaleValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/LuhnValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/NotBlankValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/NotNullValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/NullValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/RangeValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/RegexValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/TimeValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/TrueValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/TypeValidatorTest.php
	src/Symfony/Component/Validator/Tests/Constraints/UrlValidatorTest.php
	src/Symfony/Component/Validator/Tests/Fixtures/StubGlobalExecutionContext.php
* 2.5: (37 commits)
  [Validator] Backported constraint validator tests from 2.5
  [Validator] Backported constraint validator tests from 2.5
  [DIC] Fixed: anonymous services are always private
  Fix toolbar vertical alignment.
  [HttpFoundation] MongoDbSessionHandler supports auto expiry via configurable expiry_field
  [Validator] Fix little typo in ExecutionContextInterface::buildViolation() method comments
  fix dependencies on HttpFoundation component
  [FrameworkBundle] add missing attribute to XSD
  Allow basic auth in url. Improve regex. Add tests.
  fix typos and syntax in Profiler controller method comments
  resolve parameters before the configs are processed
  add symfony/yaml suggestion to composer.json
  [HttpKernel] added an analyze of environment parameters for built-in server.
  remove volatile tests
  [Console] fixed style creation when providing an unknown tag option
  change command to which available under most unix systems
  add way to test command under windows
  fix shell command injection
  [Form] allowed CallbackTransformer to use callable
  [Process] Added process synchronization to the incremental output tests
  ...

Conflicts:
	src/Symfony/Component/Form/Extension/Validator/Constraints/FormValidator.php
	src/Symfony/Component/HttpKernel/Kernel.php
	src/Symfony/Component/HttpKernel/composer.json
	src/Symfony/Component/Validator/Constraints/AllValidator.php
	src/Symfony/Component/Validator/Constraints/CollectionValidator.php
	src/Symfony/Component/Validator/Constraints/LegacyAllValidator.php
	src/Symfony/Component/Validator/Constraints/LegacyCollectionValidator.php
	src/Symfony/Component/Validator/Tests/Constraints/FileValidatorTest.php
…5 Validation API (webmozart)

This PR was merged into the 2.5 branch.

Discussion
----------

[Form] Fixed ValidatorExtension to work with the 2.5 Validation API

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | symfony#11606
| License       | MIT
| Doc PR        | -

The ValidatorExtension::loadTypeGuesser() method used to fail because the method `getMetadataFactory()` does not exist anymore on the new `ValidatorInterface`. This was fixed easily, because `ValidatorInterface` now extends `ClassMetadataFactory`.

Commits
-------

ff74f4e [Form] Fixed ValidatorExtension to work with the 2.5 Validation API
* 2.4:
  add missing options
  revert symfony#11510, moved to 2.6
  [WebProfilerBundle] Fixed double height of canvas
* 2.5:
  add missing options
  [Form] Fixed ValidatorExtension to work with the 2.5 Validation API
  revert symfony#11510, moved to 2.6
  [WebProfilerBundle] Fixed double height of canvas
… auto expiry via configurable expiry_field (catchamonkey)

This PR was merged into the 2.6-dev branch.

Discussion
----------

[HttpFoundation] MongoDbSessionHandler supports auto expiry via configurable expiry_field

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | symfony#11508
| License       | MIT
| Doc PR        | no

This PR applies symfony#11510 to master instead of 2.3

Should be merged on master:
- [x] after symfony#11667 is merged to 2.3
- [x] and after 2.3 is merged back to master

Commits
-------

beca900 [HttpFoundation] MongoDbSessionHandler supports auto expiry via configurable expiry_field
…n when the Validator API is "auto" for PHP < 5.3.9 (webmozart)

This PR was merged into the 2.5 branch.

Discussion
----------

[FrameworkBundle] Fixed validator factory definition when the Validator API is "auto" for PHP < 5.3.9

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | symfony#11580
| License       | MIT
| Doc PR        | -

Commits
-------

a74b758 [FrameworkBundle] Fixed validator factory definition when the Validator API is "auto" for PHP < 5.3.9
…ustom groups upon serialization (webmozart)

This PR was merged into the 2.6-dev branch.

Discussion
----------

[Validator] Fixed Constraint class to not destroy custom groups upon serialization

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | symfony#11638
| License       | MIT
| Doc PR        | -

Commits
-------

d405f43 [Validator] Fixed Constraint class to not destroy custom groups upon serialization
* 2.4:
  [Validators] Fixed failing tests requiring ICU 52.1 which are skipped otherwise
  return empty metadata collection if none do exist
* 2.5:
  [Validator] Fixed missing use statements
  [Validators] Fixed failing tests requiring ICU 52.1 which are skipped otherwise
  [FrameworkBundle] Fixed validator factory definition when the Validator API is "auto" for PHP < 5.3.9
  return empty metadata collection if none do exist
…raint() (webmozart)

This PR was merged into the 2.6-dev branch.

Discussion
----------

[Validator] Added ConstraintViolation::getConstraint()

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | symfony#5050
| License       | MIT
| Doc PR        | -

This PR adds a `getConstraint()` method to the `ConstraintViolation` in order to access the constraint causing the violation.

Related to symfony#7276, symfony#7273 and symfony#9691.

Commits
-------

ce1d209 [Validator] Added ConstraintViolation::getConstraint()
The ExpressionValidator was incorrectly skipping validation of null or
empty string values.
@tommygnr
Copy link
Contributor Author

I am closing this in favour of a PR against master

@tommygnr tommygnr closed this Aug 19, 2014
fabpot added a commit that referenced this pull request Aug 31, 2014
…lues (tommygnr)

This PR was merged into the 2.6-dev branch.

Discussion
----------

[Validator] Expression validator now processes null values

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | yes(minor)
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

The ExpressionValidator was incorrectly skipping validation of null or empty string values.

For example the following was (incorrectly) considered valid if hairColour is null because the validator was skipped
```php
<?php

namespace Acme\DemoBundle\Model\Person;

use Symfony\Component\Validator\Constraints as Assert;

class Person
{
    private $hasHair;

    /**
     * @Assert\Expression(
     *     "!(this.hasHair() and value == null)",
     *     message="If you have hair you must pick its colour!"
     * )
     */
    private $hairColour;
}
```

This is a follow on from #11590 but is targeted against master as the BC break introduced was considered undesirable for currently released versions of symfony.

I will squash and create a documentation PR once there is consensus that this is ready to be merged.

Commits
-------

580e1a7 [Validator] fixed: Expressions always valid for null values
@webdevilopers
Copy link

👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.