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] Unique should support objects fields #47714
base: 6.3
Are you sure you want to change the base?
Conversation
This looks like a new feature to me and thus should target 6.2. |
Also, this makes PropertyAccess a required dependency. Better not if possible. And let's throw a useful LogicException when the dep is missing, suggesting to install it (see existing ones in the codebase.) Thanks! |
@nicolas-grekas it's done, not sure about the |
if (isset($element[$field])) { | ||
$output[$field] = $element[$field]; | ||
|
||
// For no BC, because PropertyAccessor require brackets for array keys |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For no BC, that simple case should be handled without requiring PropertyAccess
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In a first time this is what I've done: check if element is an array, then that the key do not contains any "[]." (PropertyAccessor syntax) and the key exists in the element.
In that case directly access to the array value via the key.
And add an Else statement (not array and/or PropertyPath syntax, that contains the if statement (because the actual implementation accept that the key can be missing).
At the end, find simpler to just transform the key in PrpertyPath compliant syntax.
May I ask if someone is still working on this? As I opened an issue recently and learnt about this pull request and I could work on it if no one does. |
@BastienRimbert I’m waiting for some feedbacks/discussions. |
The Unique validator have a
fields
options, to define whichfields
of an array should be compared (if not set, the entire object or array is compared).But the
fields
option do not work if we defined object attributes (not the original implementation behavior), but should be logic to work with array and object.