Skip to content
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

[Validator] Fix annotation default for @Count and @Length #30736

Merged
merged 1 commit into from Mar 29, 2019

Conversation

vudaltsov
Copy link
Contributor

@vudaltsov vudaltsov commented Mar 28, 2019

Q A
Branch? 3.4
Bug fix? yes
New feature? no
BC breaks? no
Deprecations? no
Fixed tickets n/a
License MIT
Doc PR is it worth mentioning?

Count and Length constraints allow to pass the exact value as the constructor argument when used in code.

new Length(5);
// is same as
new Length(['min' => 5, 'max' => 5]);

At the same time when using them as annotations, @Assert\Length(5) throws The options "" do not exist in constraint Symfony\\Component\\Validator\\Constraints\\Length (fix for ugly exception is proposed in #30737). This happens because annotation's default value is passed as value. Since Length does not have a default option, value is replaced with ''.

This PR fixes this inconsistency.

Copy link
Contributor

@dmaicher dmaicher left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should be mentioned in the docs I think 😊

@fabpot fabpot force-pushed the assert-length-count-default branch from caf40a7 to 7bfb8c1 Compare March 29, 2019 15:49
@fabpot
Copy link
Member

fabpot commented Mar 29, 2019

Thank you @vudaltsov.

@fabpot fabpot merged commit 7bfb8c1 into symfony:3.4 Mar 29, 2019
fabpot added a commit that referenced this pull request Mar 29, 2019
…(vudaltsov)

This PR was squashed before being merged into the 3.4 branch (closes #30736).

Discussion
----------

[Validator] Fix annotation default for @count and @Length

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no| Tests pass?   | yes    <!-- please add some, will be required by reviewers -->
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | is it worth mentioning?

`Count` and `Length` constraints allow to pass the exact value as the constructor argument when used in code.

```php
new Length(5);
// is same as
new Length(['min' => 5, 'max' => 5]);
```

At the same time when using them as annotations, `@Assert\Length(5)` throws `The options "" do not exist in constraint Symfony\\Component\\Validator\\Constraints\\Length` (fix for ugly exception is proposed in #30737). This happens because annotation's default value is passed as `value`. Since `Length` does not have a default option, `value` is replaced with `''`.

This PR fixes this inconsistency.

Commits
-------

7bfb8c1 [Validator] Fix annotation default for @count and @Length
@vudaltsov vudaltsov deleted the assert-length-count-default branch March 29, 2019 15:51
This was referenced Apr 2, 2019
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.

None yet

6 participants