thecodingmachine/graphqlite-symfony-validator-bridge
Bridge between GraphQLite and Symfony Validator: validate GraphQL inputs and arguments using Symfony constraints, returning validation errors in GraphQL responses. Integrates with GraphQLite’s validation features for Symfony-based projects.
@Assert annotations).[Assert\Email]) and legacy YAML/XML constraints, offering flexibility for codebases at different maturity levels.symfony/validator and symfony/dependency-injection (~2MB overhead), which may be justified for validation but adds complexity.graphql-php/validator?symfony/validator + DI container).Respect/Validation) or GraphQL-specific tools.composer require thecodingmachine/graphqlite-symfony-validator-bridge symfony/validator symfony/dependency-injection
symfony/validator and symfony/dependency-injection to composer.json.use TheCodingMachine\GraphQLite\Validation\SymfonyValidatorBridge;
use Symfony\Component\Validator\Validator\ValidatorInterface;
// Assuming $validator is Symfony's ValidatorInterface
$validatorBridge = new SymfonyValidatorBridge($validator);
$schemaBuilder->setValidator($validatorBridge);
Default, Create) if needed:
$validatorBridge->setValidationGroups(['Default', 'Create']);
use Symfony\Component\Validator\Constraints as Assert;
#[GraphQLType]
class UserInput {
#[Assert\NotBlank]
#[Assert\Email]
private ?string $email;
#[Assert\Length(min: 8)]
private ?string $password;
}
mutation CreateUser($input: UserInput!) {
createUser(input: $input) {
success
errors
}
}
$validatorBridge->setErrorFormatter(function (ConstraintViolation $violation) {
return [
'message' => $violation->getMessage(),
'path' => $violation->getPropertyPath(),
];
});
| Component | Supported Versions | Notes |
|---|---|---|
| GraphQLite | v8+ | Older versions may require patches. |
| Symfony Validator | 6–8 | v5 via older bridge versions. |
| PHP | 8.0+ | Attributes require PHP 8+. |
| Validation Groups | Yes | Supports Symfony’s validation groups. |
| Custom Constraints | Limited | Extend bridge or use @Assert\Callback. |
@NotBlank, @Email).@Assert\Callback).How can I help you explore Laravel packages today?