Capítulo 26
Symfony: projeto guestbook
2 min de leitura 408 palavras 1 gravura
Neste capítulo você vai reconhecer a estrutura Symfony do livro de visitas do Ateliê. O projeto-fio é o Ateliê Boa Viagem, ateliê digital fictício em Boa Viagem, Recife.
Antes desta etapa
PHP 8+. Composer conforme README do exemplo.
Seu ponto de partida
Use o exemplo 26-symfony-projeto 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.
Guestbook fictício
Visitantes deixam recados sobre oficinas. PHP e Symfony pedem o volume PHP do arquivo Webdev Completo como base de linguagem.
Faça na sua cópia
Confira o trecho no contexto do exemplo antes de mudar.
// rota / recados
return $this->render('guestbook/index.html.twig', ['recados' => $recados]);
Mude uma coisa e preveja
Altere o título Twig da página.
Anote o que espera observar antes de salvar e recarregar.
Recarregue e confira
Novo título na resposta.
Se não acontecer
Siga o README do exemplo para symfony server / php -S 127.0.0.1

Estrutura de pastas
src/Controller, templates, config. Você não precisa memorizar tudo; siga o mapa do exemplo.
Faça na sua cópia
Confira o trecho no contexto do exemplo antes de mudar.
src/
templates/
config/
public/
Mude uma coisa e preveja
Localize o front controller public/index.php.
Anote o que espera observar antes de salvar e recarregar.
Recarregue e confira
Arquivo existe na referência.
Se não acontecer
Use a árvore do exemplo enxuto.
Servidor PHP local
php -S 127.0.0.1:8080 -t public
Faça na sua cópia
Confira o trecho no contexto do exemplo antes de mudar.
php -S 127.0.0.1:8080 -t public
Mude uma coisa e preveja
Abra a home.
Anote o que espera observar antes de salvar e recarregar.
Recarregue e confira
Guestbook responde.
Se não acontecer
Document root = public.
Atividades
Atividade 1
Qual pré-requisito de linguagem?
Atividade 2
Onde fica o front controller?
Atividade 3
Host permitido?
Respostas comentadas
Resposta da atividade 1
PHP (curso PHP do arquivo).
Resposta da atividade 2
public/index.php
Resposta da atividade 3
127.0.0.1
O arquivo completo
Referência do exemplo 26-symfony-projeto, reproduzida aqui para que você possa conferir sem sair da página.
public/index.php
<?php
declare(strict_types=1);
$recados = [
["autor" => "Lia", "mensagem" => "Oficina excelente (fictício)."],
["autor" => "Nuno", "mensagem" => "Volto na próxima serigrafia."],
];
?><!DOCTYPE html>
<html lang="pt-BR"><head><meta charset="utf-8"><title>Guestbook</title>
<style>body{font-family:system-ui;max-width:40rem;margin:2rem auto}</style>
</head><body>
<h1>Livro de visitas — Ateliê Boa Viagem</h1>
<ul><?php foreach ($recados as $r): ?>
<li><strong><?= htmlspecialchars($r["autor"], ENT_QUOTES, "UTF-8") ?></strong>:
<?= htmlspecialchars($r["mensagem"], ENT_QUOTES, "UTF-8") ?></li>
<?php endforeach; ?></ul>
</body></html>
templates/guestbook/index.html.twig
{# Conceito Twig — no exemplo enxuto o PHP renderiza direto #}