Справочник по Symfony
Назначение
Шпаргалка по Symfony. Сначала пройдите Первую программу на Symfony и обзор.
Консоль bin/console
php bin/console <команда>
| Команда | Действие | Когда нужна |
|---|---|---|
debug:router | Список маршрутов | После #[Route] |
debug:container | Сервисы DI | Поиск имени сервиса |
debug:autowiring | Подсказки DI | Ошибка autowire |
cache:clear | Очистка кэша | 500 после конфига |
make:controller | Контроллер | Новый HTTP-обработчик |
make:entity | Сущность Doctrine | Новая таблица |
doctrine:migrations:migrate | Миграции | Обновление схемы БД |
messenger:consume async | Воркер очереди | Messenger |
server:start | Локальный сервер | Symfony CLI |
Маршрутизация (атрибуты)
#[Route('/api/items/{id}', name: 'api_item_show', methods: ['GET'])]
public function show(int $id): JsonResponse
| Параметр | Смысл |
|---|---|
requirements | Regex для {id} |
defaults | Значения по умолчанию |
methods | HTTP-методы |
Контроллер AbstractController
return $this->render('tpl.html.twig', ['x' => 1]);
return $this->json(['ok' => true]);
return $this->redirectToRoute('route_name');
return $this->file('/path/to.pdf');
$this->denyAccessUnlessGranted('ROLE_ADMIN');
DI и сервисы
services:
_defaults:
autowire: true
autoconfigure: true
App\:
resource: '../src/'
App\MailerInterface: '@App\SymfonyMailer'
Doctrine
#[ORM\Entity]
class Product
{
#[ORM\Id, ORM\GeneratedValue, ORM\Column]
private ?int $id = null;
#[ORM\Column(length: 255)]
private string $name = '';
}
$product = $repo->find($id);
$em->persist($entity);
$em->flush();
Twig
| Конструкция | Назначение |
|---|---|
{{ variable }} | Вывод |
{% if %} | Условие |
{% for %} | Цикл |
{% extends %} | Layout |
{{ path('route_name', {id: 1}) }} | URL |
Конфигурация
| Переменная | Назначение |
|---|---|
APP_ENV | dev / prod / test |
APP_SECRET | CSRF, cookies |
DATABASE_URL | DSN Doctrine |
См. также
Базовый разбор HTTP и HTTPS находится в отдельной статье — HTTP как основа веб-интеграций.