Installation
composer require antkowiak/validation-bundle dev-master
Add the bundle to config/bundles.php:
Antkowiak\ValidationBundle\AntkowiakValidationBundle::class => ['all' => true],
First Use Case Define a class with validation rules (e.g., using annotations or YAML/XML constraints). Example:
use Symfony\Component\Validator\Constraints as Assert;
class User {
/**
* @Assert\NotBlank(message="Ta wartość nie powinna być pusta.")
* @Assert\Email(message="Ta wartość nie jest prawidłowym adresem email.")
*/
public $email;
/**
* @Assert\Length(min=3, minMessage="Ta wartość jest zbyt krótka.")
*/
public $name;
}
Validate an Object Inject the validator service (via dependency injection or container):
$validator = $this->container->get('antkowiak.validator');
$user = new User();
$user->email = 'invalid';
$user->name = 'ab';
$isValid = $validator->isValid($user); // false
$errors = $validator->getMessages($user); // Array of error messages
Form Validation Use the validator in controllers or form handlers:
public function handleSubmit(Request $request) {
$user = new User();
$user->email = $request->get('email');
$user->name = $request->get('name');
$validator = $this->get('antkowiak.validator');
if (!$validator->isValid($user)) {
$errors = $validator->getMessages($user);
// Flash errors or render form with errors
}
// Proceed on success
}
API Validation Return structured error responses:
$response = [
'success' => $validator->isValid($data),
'errors' => $validator->getMessages($data)
];
return new JsonResponse($response);
Custom Validation Logic Extend the validator or create custom constraints:
use Symfony\Component\Validator\Constraint;
class CustomConstraint extends Constraint {
public $message = 'Custom validation failed.';
}
Symfony\Component\Form\FormError for seamless form handling.PRE_PERSIST in Doctrine).public function __construct(private ValidatorInterface $validator) {}
Bundle Maturity
dev-master and lacks stars/dependents. Test thoroughly in staging.Error Message Localization
$constraint = new NotBlank(['message' => $this->translator->trans('validation.not_blank')]);
Constraint Loading
# config/packages/antkowiak_validation.yaml
antkowiak_validation:
validation:
enabled_annotations: true
antkowiak.validator exists.
php bin/console debug:container antkowiak.validator
Custom Validators
Implement Symfony\Component\Validator\Validator\ValidatorInterface and register as a service:
services:
app.custom_validator:
class: App\Validator\CustomValidator
tags: [validator.constraint_validator]
Override Default Validator
Replace the default validator in config/packages/antkowiak_validation.yaml:
antkowiak_validation:
validator: app.custom_validator
Group Validation
Use Symfony’s validation groups (e.g., Default, Create) via constraints:
/**
* @Assert\NotBlank(groups={"Create"})
*/
public $field;
Then validate with:
$validator->validate($object, ['Create']);
How can I help you explore Laravel packages today?