Introdução
Trabalhar com formulários no Symfony pode ser uma tarefa simples ou complexa, dependendo do tipo de form que você deseja criar. Neste artigo, vamos falar sobre como criar e validar campos em um formulário do Symfony, para que você possa criar suas próprias telas facilmente.
Criando um formulário
Para criar um formulário em Symfony, é necessário utilizar a classe Form. Essa classe faz parte do componente Form e pode ser encontrada no namespace SymfonyComponentForm. Para criar um novo formulário, é necessário passar algumas informações básicas, como o nome do formulário e os campos que ele vai ter.
Para criar um formulário em Symfony, você pode utilizar o seguinte código:
use SymfonyComponentFormExtensionCoreTypeFormType;
use SymfonyComponentFormExtensionCoreTypeTextType;
use SymfonyComponentFormExtensionCoreTypeSubmitType;
use SymfonyComponentFormExtensionCoreTypeEmailType;
$formBuilder = $this->createFormBuilder();
$formBuilder->add('nome', TextType::class, [
'attr' => [
'class' => 'form-control'
]
]);
$formBuilder->add('email', EmailType::class, [
'attr' => [
'class' => 'form-control'
]
]);
$formBuilder->add('enviar', SubmitType::class, [
'label' => 'Enviar',
'attr' => [
'class' => 'btn btn-primary'
]
]);
$form = $formBuilder->getForm();
Neste exemplo, o formulário é criado com três campos: nome, email e enviar. O primeiro campo é do tipo TextType, o segundo do tipo EmailType e o terceiro é um botão submit.
Validando os campos
A validação dos campos é feita utilizando a classe Validator. Ela faz parte do componente Validator e pode ser encontrada no namespace SymfonyComponentValidatorConstraints. Para validar um campo, é necessário definir as regras de validação e as mensagens de erro que serão exibidas caso o campo não esteja de acordo com as regras.
Para validar um campo em Symfony, você pode utilizar o seguinte código:
use SymfonyComponentValidatorConstraints as Assert;
$formBuilder = $this->createFormBuilder();
$formBuilder->add('nome', TextType::class, [
'attr' => [
'class' => 'form-control'
],
'constraints' => [
new AssertNotBlank([
'message' => 'Este campo não pode ser vazio'
]),
new AssertLength([
'min' => 3,
'max' => 50,
'minMessage' => 'O nome deve ter no mínimo {{ limit }} caracteres',
'maxMessage' => 'O nome deve ter no máximo {{ limit }} caracteres'
])
]
]);
$formBuilder->add('email', EmailType::class, [
'attr' => [
'class' => 'form-control'
],
'constraints' => [
new AssertNotBlank([
'message' => 'Este campo não pode ser vazio'
]),
new AssertEmail([
'message' => 'O email informado não é válido'
])
]
]);
$formBuilder->add('enviar', SubmitType::class, [
'label' => 'Enviar',
'attr' => [
'class' => 'btn btn-primary'
]
]);
$form = $formBuilder->getForm();
Neste exemplo, os campos nome e email são validados utilizando as classes NotBlank e Length (para o campo nome) e Email (para o campo email). É possível utilizar diversas outras classes de validação para garantir que os dados informados pelo usuário estejam corretos.
Conclusão
Criar e validar campos em um formulário no Symfony é uma tarefa relativamente simples, mas que requer um pouco de conhecimento sobre as classes e componentes utilizados pelo framework. Com estas dicas, você já pode começar a criar suas próprias telas e garantir que os dados informados pelos usuários estejam de acordo com as regras definidas. Caso tenha alguma dúvida, deixe um comentário abaixo!