O que é o sistema de validação do Symfony?
O sistema de validação do Symfony é uma ferramenta poderosa que permite verificar a integridade de entidades e formulários em uma aplicação construída com o framework Symfony. O sistema de validação do Symfony é flexível e permite configurar regras de validação personalizadas para as entidades e formulários da sua aplicação.
Como utilizar o sistema de validação do Symfony?
Para utilizar o sistema de validação do Symfony, é necessário primeiro definir as regras de validação que serão aplicadas às entidades e formulários da sua aplicação. As regras de validação são definidas nos arquivos de configuração YAML ou XML e podem ser configuradas de acordo com as necessidades da sua aplicação.
Por exemplo, para definir uma regra de validação para o nome de um livro em sua aplicação, você poderia adicionar o seguinte código ao arquivo de configuração:
BookBundleEntityBook:
properties:
title:
- NotBlank:
message: "O título do livro deve ser preenchido."
author:
- NotBlank:
message: "O autor do livro deve ser informado."
pages:
- NotNull:
message: "O número de páginas deve ser informado."
- GreaterThan:
value: 0
message: "O livro deve ter pelo menos uma página."
Neste exemplo, estamos definindo três regras de validação para a entidade Book. A primeira regra, NotBlank, verifica se o título do livro foi preenchido. A segunda regra, NotBlank, verifica se o autor do livro foi informado. A terceira regra, GreaterThan, verifica se o número de páginas informado é maior do que zero.
Uma vez que as regras de validação foram definidas, é possível utilizar o sistema de validação do Symfony em diversos contextos da sua aplicação. Uma das formas mais comuns de utilização do sistema de validação do Symfony é em conjunto com formulários.
Como utilizar o sistema de validação do Symfony em formulários?
Para utilizar o sistema de validação do Symfony em formulários, é necessário estender a classe SymfonyComponentFormAbstractType e definir as regras de validação para cada campo do formulário.
Por exemplo, para definir as regras de validação para um formulário de criação de livros, você poderia adicionar o seguinte código à classe do formulário:
use SymfonyComponentFormAbstractType;
use SymfonyComponentFormFormBuilderInterface;
use SymfonyComponentOptionsResolverOptionsResolver;
use SymfonyComponentValidatorConstraintsNotBlank;
use SymfonyComponentValidatorConstraintsNotNull;
use SymfonyComponentValidatorConstraintsGreaterThan;
class BookType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('title', null, [
'label' => 'Título',
'required' => true,
'constraints' => [
new NotBlank([
'message' => 'O título do livro deve ser preenchido.',
]),
],
])
->add('author', null, [
'label' => 'Autor',
'required' => true,
'constraints' => [
new NotBlank([
'message' => 'O autor do livro deve ser informado.',
]),
],
])
->add('pages', null, [
'label' => 'Páginas',
'required' => true,
'constraints' => [
new NotNull([
'message' => 'O número de páginas deve ser informado.',
]),
new GreaterThan([
'value' => 0,
'message' => 'O livro deve ter pelo menos uma página.',
]),
],
])
;
}
}
Neste exemplo, estamos definindo três regras de validação para os campos do formulário. A primeira regra, NotBlank, verifica se o título do livro foi preenchido. A segunda regra, NotBlank, verifica se o autor do livro foi informado. A terceira regra, GreaterThan, verifica se o número de páginas informado é maior do que zero.
Com as regras de validação definidas, é possível utilizar o sistema de validação do Symfony para verificar se os dados enviados pelo formulário são válidos. Para validar o formulário, você pode utilizar o seguinte código:
use AppFormBookType;
use AppEntityBook;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
class BookController extends AbstractController
{
public function create(Request $request)
{
$book = new Book();
$form = $this->createForm(BookType::class, $book);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
// Salva o livro no banco de dados
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($book);
$entityManager->flush();
// Redireciona para a página de sucesso
return $this->redirectToRoute('book_created');
}
return $this->render('book/create.html.twig', [
'form' => $form->createView(),
]);
}
}
Neste exemplo, estamos criando um novo livro a partir dos dados enviados pelo formulário de criação de livros. Antes de salvar o livro no banco de dados, verificamos se o formulário é válido utilizando o método isValid() da classe Form. Se o formulário for válido, salvamos o livro no banco de dados e redirecionamos para a página de sucesso.
Com essas dicas, você poderá utilizar o sistema de validação do Symfony para verificar a integridade de entidades e formulários em sua aplicação Symfony.