(16) 981791110 contato@policast.studio

Introdução

Symfony é um framework PHP completo para desenvolvimento de aplicações web. Uma das suas funcionalidades mais poderosas é o componente Form, que permite criar e manipular formulários de maneira simples e fácil. Neste artigo, vamos explorar casos de uso avançados com formulários personalizados no Symfony.

Como criar um formulário personalizado?

O primeiro passo para criar um formulário personalizado é definir o tipo do formulário. Isso pode ser feito criando uma classe que estenda a classe AbstractType do Symfony. Essa classe deve implementar o método buildForm, onde todos os campos do formulário são definidos.

Por exemplo, vamos criar um formulário de cadastro de usuário. A classe UserType poderia ser definida como:


class UserType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', TextType::class)
->add('email', EmailType::class)
->add('password', PasswordType::class);
}

public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => User::class,
]);
}
}

Aqui, estamos adicionando campos para o nome, e-mail e senha do usuário. O método configureOptions também é importante. Aqui, estamos definindo a classe de dados que será usada para preencher e manipular o formulário.

Como utilizar um formulário personalizado?

Uma vez definido o tipo do formulário, podemos utilizá-lo em qualquer lugar da nossa aplicação. Por exemplo, podemos criar uma action em um controller para exibir e processar o formulário:

Por exemplo:


class UserController extends AbstractController
{
/**
* @Route("/register", name="user_register")
*/
public function register(Request $request, UserPasswordEncoderInterface $passwordEncoder)
{
// cria um novo usuário
$user = new User();

// cria o formulário para registrar o usuário
$form = $this->createForm(UserType::class, $user);

// processa o envio do formulário
$form->handleRequest($request);

if ($form->isSubmitted() && $form->isValid()) {
// criptografa a senha do usuário
$encodedPassword = $passwordEncoder->encodePassword($user, $user->getPlainPassword());
$user->setPassword($encodedPassword);

// salva o novo usuário no banco de dados
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($user);
$entityManager->flush();

return $this->redirectToRoute('homepage');
}

// exibe o formulário
return $this->render('user/register.html.twig', [
'form' => $form->createView(),
]);
}
}

Aqui, estamos criando um formulário para cadastrar um novo usuário. A classe UserType é passada como argumento para a criação do formulário, juntamente com uma nova instância da classe User. A função handleRequest é chamada para processar o envio do formulário. Se o formulário for válido, a senha do usuário é criptografada e o novo usuário é salvo no banco de dados. Caso contrário, o formulário é exibido novamente com mensagens de erro.

Conclusão

Os formulários personalizados são uma poderosa ferramenta do Symfony para criar interfaces de usuário personalizadas e flexíveis. Com as dicas apresentadas neste artigo, você poderá criar formulários ainda mais úteis e eficientes em seus projetos Symfony.