brazilianfriendsofsymfony/brasil-bundle
Installation
composer require brazilianfriendsofsymfony/brasil-bundle
Ensure jQuery and RequireJS are included in your project (e.g., via webpack or CDN).
Configure Twig
Add the bundle’s form layout to your config/packages/twig.yaml:
twig:
form:
resources:
- 'BFOSBrasilBundle:Form:form_div_layout.html.twig'
Load Fixtures (for City/State Form Type) Run the Doctrine fixtures loader to populate cities/states:
php bin/console doctrine:fixtures:load
First Use Case: Validate a CPF
Use the CPF constraint in an entity:
use BFOSBrasil\Validator\Constraints as BrasilAssert;
class User
{
#[BrasilAssert\CPF]
private $cpf;
}
Usage:
use BFOSBrasil\Form\Type\CidadeType;
$builder->add('city', CidadeType::class);
Workflow:
UF) via a dropdown.DoctrineFixturesBundle for initial data seeding.Integration Tips:
form_div_layout.html.twig for AJAX to work.doctrine:fixtures:load or override the fixture loader.Usage:
use BFOSBrasil\Validator\Constraints as BrasilAssert;
class Client
{
#[BrasilAssert\CPF]
private $document;
#[BrasilAssert\CNPJ]
private $companyDocument;
#[BrasilAssert\Telefone]
private $phone;
#[BrasilAssert\DDD]
private $ddd;
}
Workflow:
config/validator/validation.yaml:
BFOSBrasil\Validator\Constraints\CPF:
message: 'CPF inválido.'
Integration Tips:
ValidatorInterface for dynamic validation (e.g., in forms).ConstraintValidatorInterface.config/routes.yaml:
bfos_brasil:
resource: '@BFOSBrasilBundle/Resources/config/routing.yml'
/_brasil/cidades).Missing Fixtures:
doctrine:fixtures:load will break the CidadeType.cidades table or override the fixture loader.jQuery/RequireJS Dependency:
assets/ pipeline or <head>.Validation Overrides:
priority in constraint annotations or implement ConstraintValidatorInterface.Twig Template Conflicts:
form_div_layout.html.twig may break AJAX functionality.php bin/console doctrine:query:sql "SELECT * FROM cidades LIMIT 5"
$validator = $this->get('validator');
$errors = $validator->validate($entity);
/_brasil/cidades endpoints return data.Custom City Data:
Override the fixture loader or create a custom CidadeRepository.
New Validation Rules:
Extend BrasilAssert namespace or create a custom validator:
class CEPValidator extends ConstraintValidator
{
public function validate($value, Constraint $constraint)
{
// Custom logic
}
}
Form Type Customization:
Extend CidadeType to modify behavior (e.g., add placeholders):
class CustomCidadeType extends CidadeType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->addModelTransformer(...);
}
}
How can I help you explore Laravel packages today?