<? phpukraine ДОКУМЕНТАЦІЯ
Пошук по платформі
Документація українською

Переклад силами спільноти. Кожен розділ показує стан готовності — недоперекладене відкрито помічене, а не приховане.

ВЕРСІЯ
АКТУАЛЬНА Актуальний реліз. Переклад наздоганяє оригінал — розділи з низьким відсотком позначені у змісті.
ПОЧАТОК · ПЕРЕКЛАДЕНО оновлено 4 вересня 2026

Перша сторінка — Symfony

Створення нової сторінки — байдуже, HTML-сторінки чи JSON-ендпоінта — це процес із двох кроків:

  1. Створити контролер: контролер — це PHP-функція, яку ви пишете і яка будує сторінку. Ви берете інформацію з вхідного запиту й використовуєте її, щоб створити обʼєкт Symfony Response, який може містити HTML-вміст, JSON-рядок або навіть бінарний файл на кшталт зображення чи PDF;

  2. Створити маршрут: маршрут — це URL (наприклад, /about) до вашої сторінки, що вказує на контролер.

Скрінкаст

Віддаєте перевагу відеоурокам? Перегляньте серію скрінкастів Cosmic Coding with Symfony.

Дивіться також

Symfony приймає життєвий цикл HTTP «запит — відповідь». Щоб дізнатися більше, перегляньте Основи HTTP.

Створення сторінки: маршрут і контролер

Порада

Перш ніж читати далі, переконайтеся, що ви прочитали статтю Налаштування і можете відкрити свій новий Symfony-застосунок у браузері.

Припустімо, ви хочете створити сторінку — /lucky/number — яка генерує щасливе (ну, випадкове) число і друкує його. Для цього створіть клас «Controller» і метод «number» усередині нього:

<?php
// src/Controller/LuckyController.php
namespace App\Controller;

use Symfony\Component\HttpFoundation\Response;

class LuckyController
{
    public function number(): Response
    {
        $number = random_int(0, 100);

        return new Response(
            '<html><body>Lucky number: '.$number.'</body></html>'
        );
    }
}

Тепер потрібно повʼязати цю функцію-контролер із публічним URL (наприклад, /lucky/number), щоб метод number() викликався, коли користувач переходить за цією адресою. Цей звʼязок визначається атрибутом #[Route] (у PHP атрибути використовуються, щоб додавати метадані до коду):

  // src/Controller/LuckyController.php

  // ...
+ use Symfony\Component\Routing\Attribute\Route;

  class LuckyController
  {
+     #[Route('/lucky/number')]
      public function number(): Response
      {
          // це виглядає точно так само
      }
  }

Ось і все! Якщо ви користуєтеся вебсервером Symfony, спробуйте перейти за адресою: http://localhost:8000/lucky/number

Порада

Symfony рекомендує визначати маршрути як атрибути, щоб код контролера і конфігурація його маршруту були в одному місці. Проте, якщо вам так зручніше, ви можете визначати маршрути в окремих файлах у форматах YAML або PHP.

Якщо ви бачите, що вам виводиться щасливе число, — вітаємо! Але перш ніж бігти грати в лотерею, погляньмо, як це працює. Памʼятаєте два кроки для створення сторінки?

  1. Створити контролер і метод: це функція, у якій ви будуєте сторінку і зрештою повертаєте обʼєкт Response. Ви дізнаєтеся більше про контролери в окремому розділі, зокрема про те, як повертати JSON-відповіді;

  2. Створити маршрут: маршрут визначає шлях URL до вашої сторінки і те, який метод контролера викликати. Ви дізнаєтеся більше про маршрутизацію в окремому розділі, зокрема про те, як робити змінні URL.

Команда bin/console

У вашому проєкті вже є потужний інструмент для налагодження: команда bin/console. Спробуйте запустити її:

$ php bin/console

Ви побачите список команд, які можуть надати інформацію для налагодження, допомогти згенерувати код, згенерувати міграції бази даних і багато іншого. Що більше пакетів ви встановлюєте, то більше команд бачитимете.

Щоб отримати список усіх маршрутів у вашій системі, скористайтеся командою debug:router:

$ php bin/console debug:router

Ви маєте побачити свій маршрут app_lucky_number у списку:

----------------  -------  --------------
Name              Method   Path
----------------  -------  --------------
app_lucky_number  ANY      /lucky/number
----------------  -------  --------------

Окрім app_lucky_number, ви також побачите налагоджувальні маршрути — про них далі в наступному розділі.

Ви дізнаєтеся ще про багато команд, читаючи далі!

Порада

Якщо ваш шелл підтримується, ви також можете налаштувати підтримку автодоповнення в консолі. Це автоматично доповнює команди та інший ввід під час використання bin/console. Дивіться документ про Console, щоб дізнатися більше про налаштування автодоповнення.

Панель веб-налагодження (Web Debug Toolbar): мрія для налагодження

Одна з дивовижних можливостей Symfony — це Web Debug Toolbar: панель, що відображає величезну кількість налагоджувальної інформації внизу вашої сторінки під час розробки. Усе це вмикається за замовчуванням, коли ви використовуєте пакет Symfony (Symfony pack) під назвою symfony/profiler-pack.

Ви побачите темну панель унизу сторінки. Про всю інформацію, яку вона містить, ви дізнаєтеся дорогою, але не соромтеся експериментувати: наводьте курсор і клацайте різні іконки, щоб отримати інформацію про маршрутизацію, продуктивність, логування тощо.

Рендеринг шаблону

Якщо ви повертаєте HTML зі свого контролера, вам, найімовірніше, захочеться відрендерити шаблон. На щастя, Symfony поставляється з Twig: мовою шаблонів, яка є мінімалістичною, потужною і, чесно кажучи, доволі приємною.

Установіть пакет twig за допомогою:

$ composer require twig

Переконайтеся, що LuckyController розширює базовий клас Symfony Symfony\Bundle\FrameworkBundle\Controller\AbstractController:

  // src/Controller/LuckyController.php

  // ...
+ use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

- class LuckyController
+ class LuckyController extends AbstractController
  {
      // ...
  }

Тепер скористайтеся зручним методом render(), щоб відрендерити шаблон. Передайте йому змінну number, щоб ви могли використати її у Twig:

// src/Controller/LuckyController.php
namespace App\Controller;

use Symfony\Component\HttpFoundation\Response;
// ...

class LuckyController extends AbstractController
{
    #[Route('/lucky/number')]
    public function number(): Response
    {
        $number = random_int(0, 100);

        return $this->render('lucky/number.html.twig', [
            'number' => $number,
        ]);
    }
}

Файли шаблонів лежать у теці templates/, яка була створена для вас автоматично під час встановлення Twig. Створіть нову теку templates/lucky з новим файлом number.html.twig усередині:

{# templates/lucky/number.html.twig #}
<h1>Your lucky number is {{ number }}</h1>

Синтаксис {{ number }} використовується, щоб друкувати змінні у Twig. Оновіть сторінку в браузері, щоб отримати нове щасливе число!

http://localhost:8000/lucky/number

Тепер ви можете здивуватися, куди поділася Web Debug Toolbar: це тому, що в поточному шаблоні немає тега </body>. Ви можете додати елемент body самостійно або розширити base.html.twig, який містить усі типові HTML-елементи.

У статті про шаблони ви дізнаєтеся все про Twig: як робити цикли, рендерити інші шаблони й використовувати його потужну систему успадкування макетів.

Огляд структури проєкту

Чудові новини! Ви вже попрацювали в найважливіших теках свого проєкту:

config/ : Містить конфігурацію. Тут ви налаштовуватимете маршрути, сервіси і пакети.

src/ : Тут живе весь ваш PHP-код.

templates/ : Тут живуть усі ваші шаблони Twig.

Більшість часу ви працюватимете в src/, templates/ або config/. Читаючи далі, ви дізнаєтеся, що можна робити всередині кожної з них.

А що ж інші теки в проєкті?

bin/ : Тут живе славнозвісний файл bin/console (та інші, менш важливі виконувані файли).

var/ : Тут зберігаються автоматично створені файли, як-от файли кешу (var/cache/) і логи (var/log/).

vendor/ : Тут живуть сторонні (тобто «vendor») бібліотеки! Вони завантажуються через менеджер пакетів Composer.

public/ : Це document root вашого проєкту: сюди ви кладете будь-які публічно доступні файли.

А коли ви встановлюєте нові пакети, нові теки створюватимуться автоматично за потреби.

Що далі?

Вітаємо! Ви вже починаєте вивчати Symfony і відкривати для себе цілком новий спосіб побудови красивих, функціональних, швидких і зручних у підтримці застосунків.

Гаразд, час завершити вивчення основ, прочитавши ці статті:

Далі дізнайтеся про інші важливі теми, як-от контейнер сервісів, систему форм, використання Doctrine (якщо вам потрібно робити запити до бази даних) та інше!

Гарного вам часу!

Заглиблюйтеся в основи HTTP і фреймворку

ЯК ЦЯ СТОРІНКА ВИГЛЯДАЄ В ПОШУКУ
phpukraine.com/docs/symfony/page-creation
Перша сторінка — Symfony документація українською
Перша сторінка у Symfony 8.1: переклад офіційної документації українською. Оновлено 4 вересня 2026. Приклади коду, пояснення та посилання на питання зі співбесід.
Переклад робить спільнота

Виправити терміни, дописати розділ або взяти нову главу може кожен. Термінологію узгоджуємо в глосарії, щоб переклад лишався однорідним.

1
Перекладачів
79%
Готовності
0
Вільних розділів
Глосарій термінів