Pular para o conteúdo
murad.guide

Aplicações Web

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

Symfony guestbook

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 #}