-
Notifications
You must be signed in to change notification settings - Fork 222
Open
Description
Q | A |
---|---|
Bug report? | no |
Feature request? | yes |
BC Break report? | no |
RFC? | no |
Version/Branch | 1.6.0 |
As of now constraints can be applied as such:
AddUserInput:
type: input-object
config:
fields:
username:
type: String!
validation: # using an explicit list of constraints
- NotBlank: ~
- Length: { min: 6, max: 32 }
password:
type: String!
validation: App\Entity\User::$password # using a link
email:
type: String!
validation: # mixing both
link: App\Entity\User::$email
constraints:
- Email: ~
User:
type: input-object
config:
validation:
- Callback: [App\Validation\UserValidator, validate]
fields:
username:
type: String!
password:
type: String!
email:
type: String!
Maybe it is more of a personal thing but I find easier to sometimes define a custom constraint (potentially with its own validator) in plain PHP code. In other words, I have a Collection
constraint AddUserInput
, which I validate in my resolver:
$violations = $this->validator->validate($input, new AddUserInput());
if (count($violations) > 0) {
throw new ArgumentsValidationException($violations);
}
And whilst it works, I wish I could just do this:
AddUserInput:
type: input-object
config:
validation
- App\GraphQL\Validation\AddUserInput: ~
fields:
username:
type: String!
password:
type: String!
email:
type: String!
Current this will not work because it is a Collection
constraint which cannot be applied to a class. However in usage, it does not really need to be a class. Do you have any idea how we could make this work?
Metadata
Metadata
Assignees
Labels
No labels