Перейти к основному содержимому

Первая программа на Symfony

Разработчику Архитектору
Загрузка симулятора первой программы…

Первая программа на Symfony

Создадим приложение «Приветствие» с маршрутом /hello/{name} и шаблоном Twig.

Обзор: Symfony. Для сравнения пошагового MVC на PHP см. Первая программа на Laravel.


Требования


Создание проекта

symfony new symfony-hello --webapp
cd symfony-hello

Либо через Composer:

composer create-project symfony/skeleton symfony-hello
cd symfony-hello
composer require webapp

Запуск встроенного сервера:

symfony server:start
# или
php -S 127.0.0.1:8000 -t public

Откройте https://127.0.0.1:8000 (Symfony CLI) или http://127.0.0.1:8000.


Контроллер

php bin/console make:controller HelloController

Файл src/Controller/HelloController.php:

<?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;

class HelloController extends AbstractController
{
#[Route('/hello/{name}', name: 'app_hello', requirements: ['name' => '[a-zA-Z]+'], defaults: ['name' => 'World'])]
public function hello(string $name): Response
{
return $this->render('hello/hello.html.twig', [
'name' => $name,
]);
}

#[Route('/api/hello', name: 'api_hello', methods: ['GET'])]
public function apiHello(): Response
{
return $this->json(['message' => 'Hello from Symfony API']);
}
}

Шаблон Twig

templates/hello/hello.html.twig:

{% extends 'base.html.twig' %}

{% block title %}Привет{% endblock %}

{% block body %}
<h1>Привет, {{ name }}!</h1>
<p>Это ваша первая страница на Symfony.</p>
{% endblock %}

Проверьте: http://127.0.0.1:8000/hello/Алексей — сегмент {name} с ограничением [a-zA-Z]+ отсечёт кириллицу; для Unicode ослабьте requirements или используйте query-параметр.


Полезные команды

php bin/console debug:router
php bin/console cache:clear
php bin/console make:entity Product # Doctrine
php bin/console doctrine:migrations:migrate

Структура каталогов (кратко)

ПутьНазначение
src/Controller/HTTP-обработчики
templates/Twig-шаблоны
config/Маршруты, сервисы, пакеты
public/Точка входа index.php
var/Кэш, логи
migrations/Миграции Doctrine

Дальше

  • Настроить Security (форма входа).
  • Подключить API Platform для REST поверх Doctrine.
  • Деплой: только public/ отдаёт веб-сервер; APP_ENV=prod, composer install --no-dev.

См. также

Другие статьи этого же раздела в боковом меню (как на странице «О разделе»).