(16) 981791110 contato@policast.studio

Introdução

Os eventos de formulário no Symfony permitem que você manipule e responda a eventos gerados por formulários. O objetivo deste artigo é mostrar como trabalhar com esses eventos, desde a criação de um ouvinte de evento até a manipulação dos dados do formulário.

O que são eventos de formulário no Symfony?

Os eventos de formulário são eventos que são disparados durante o ciclo de vida de um formulário do Symfony. Eles permitem que você manipule o formulário e seus dados em várias etapas do processo. Você pode usar os eventos de formulário para modificar o comportamento padrão do formulário, adicionar validação personalizada ou manipular os dados antes ou após o envio do formulário.

Como criar um ouvinte de evento de formulário?

Para criar um ouvinte de evento de formulário no Symfony, você precisa criar uma classe que implemente a interface SubscriberInterface e, em seguida, registrar essa classe como um serviço em seu contêiner de serviço. A classe ouvinte de evento deve ter um método getSubscribedEvents que retorna um array de eventos que o ouvinte está inscrito para ouvir.

O método getSubscribedEvents deve retornar um array de eventos, onde a chave é o nome do evento e o valor é o nome do método que será executado quando o evento ocorrer.


class MeuOuvinteDeEvento implements SubscriberInterface
{
public static function getSubscribedEvents()
{
return [
FormEvents::PRE_SUBMIT => 'preSubmit',
FormEvents::POST_SUBMIT => 'postSubmit',
];
}

public function preSubmit(FormEvent $event)
{
// Manipula o formulário antes de ser enviado
}

public function postSubmit(FormEvent $event)
{
// Manipula o formulário após o envio
}
}

Como manipular os dados do formulário em um ouvinte de evento?

Ao criar um ouvinte de evento de formulário, você pode manipular os dados do formulário em vários estágios, antes ou após o envio do formulário. Para manipular os dados do formulário, você precisa acessar o objeto de dados do formulário, que contém os valores dos campos do formulário.


public function preSubmit(FormEvent $event)
{
$data = $event->getData();

// Altera os dados do formulário
$data['campo_personalizado'] = 'valor_personalizado';

$event->setData($data);
}

Como adicionar validação personalizada em um ouvinte de evento?

Você pode adicionar validação personalizada a um formulário do Symfony, criando uma classe de validação personalizada e registrando-a como um serviço em seu contêiner de serviço. Em seguida, você pode adicionar essa validação personalizada ao formulário em um ouvinte de evento.


class MeuValidadorPersonalizado extends ConstraintValidator
{
public function validate($value, Constraint $constraint)
{
// Validar o valor do campo do formulário
}
}

class MeuOuvinteDeEvento implements SubscriberInterface
{
private $validator;

public function __construct(ValidatorInterface $validator)
{
$this->validator = $validator;
}

public static function getSubscribedEvents()
{
return [
FormEvents::POST_SUBMIT => 'postSubmit',
];
}

public function postSubmit(FormEvent $event)
{
$form = $event->getForm();

$form->add('campo_personalizado', TextType::class, [
'constraints' => [
new MeuValidadorPersonalizado(),
],
]);

$violacoes = $this->validator->validate($form->getData());

if ($violacoes->count() > 0) {
// Trata as violações de validação
}
}
}

Conclusão

Os eventos de formulário do Symfony são uma ferramenta poderosa que podem ajudá-lo a personalizar o comportamento dos formulários e validar os dados do formulário. Com a criação de ouvintes de evento, você pode manipular os dados do formulário, adicionar validação personalizada e muito mais. Esperamos que este artigo tenha lhe fornecido uma compreensão clara de como trabalhar com eventos de formulário no Symfony.