Pular para o conteúdo
murad.guide

Aplicações Web

Capítulo 27

Symfony: entidades e formulário

2 min de leitura 385 palavras 1 gravura

Neste capítulo você vai persistir recados com entidade e formulário. O projeto-fio é o Ateliê Boa Viagem, ateliê digital fictício em Boa Viagem, Recife.

Seu ponto de partida

Use o exemplo 27-symfony-entidades do pacote anexo e copie inicio/ para uma pasta de prática fora do original. A raiz do exemplo é a referência completa desta etapa.

Use servidor só em 127.0.0.1 quando o README do exemplo pedir HTTP local. Abrir ou testar não publica nada.

Como praticar

Leia → copie ou digite → mude uma coisa → preveja → salve → recarregue → confira. Restaure cada experiência antes da próxima. Faça as atividades antes de abrir as respostas comentadas.

Mapa visual de Symfony: entidades e formulário

Entidade Recado

Campos autor, mensagem, criadoEm. SQLite ou Doctrine conforme o exemplo enxuto.

Faça na sua cópia

Confira o trecho no contexto do exemplo antes de mudar.

class Recado {
    private ?int $id = null;
    private string $autor = '';
    private string $mensagem = '';
}

Mude uma coisa e preveja

Limite mensagem a 500 caracteres na validação.

Anote o que espera observar antes de salvar e recarregar.

Recarregue e confira

Mensagem longa é rejeitada.

Se não acontecer

Assert/constraints no exemplo.

FormType

Formulário Symfony gera campos e CSRF.

Faça na sua cópia

Confira o trecho no contexto do exemplo antes de mudar.

$form = $this->createForm(RecadoType::class, $recado);

Mude uma coisa e preveja

Torne autor obrigatório.

Anote o que espera observar antes de salvar e recarregar.

Recarregue e confira

Submit vazio falha.

Se não acontecer

handleRequest + isValid.

Twig escapa por padrão

{{ recado.mensagem }} não renderiza HTML cru. Mantenha assim.

Faça na sua cópia

Confira o trecho no contexto do exemplo antes de mudar.

<li>{{ recado.autor }}: {{ recado.mensagem }}</li>

Mude uma coisa e preveja

Mostre a data formatada.

Anote o que espera observar antes de salvar e recarregar.

Recarregue e confira

Data legível.

Se não acontecer

Filtro date no Twig.

Atividades

Atividade 1

O que uma entidade representa?

Atividade 2

CSRF vem ligado nos forms Symfony?

Atividade 3

Pode imprimir HTML cru da mensagem?

Respostas comentadas

Resposta da atividade 1

Objeto de domínio persistido.

Resposta da atividade 2

Sim, no fluxo padrão de forms.

Resposta da atividade 3

Não no estudo; mantenha escape.

O arquivo completo

Referência do exemplo 27-symfony-entidades, reproduzida aqui para que você possa conferir sem sair da página.

src/Entity/Recado.php

<?php
// Entidade conceitual do curso
class Recado {
    public ?int $id = null;
    public string $autor = "";
    public string $mensagem = "";
}