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

Справочник по Symfony

Назначение

Шпаргалка по Symfony (Framework + Console). Курс: Symfony, Первая программа на Symfony.


Консоль bin/console

КомандаДействие
debug:routerСписок маршрутов
debug:containerСервисы DI
debug:autowiringПодсказки по внедрению
cache:clearОчистка кэша
make:controllerГенератор контроллера
make:entityСущность Doctrine
doctrine:migrations:migrateПрименить миграции
messenger:consume asyncВоркер очереди
server:startЛокальный сервер (если установлен symfony/cli)

Маршрутизация (атрибуты)

#[Route('/api/items/{id}', name: 'api_item_show', methods: ['GET'])]
public function show(int $id): JsonResponse
Параметр атрибутаСмысл
requirementsRegex для сегментов
defaultsЗначения по умолчанию
methodsHTTP-методы
conditionВыражение для выбора маршрута

Контроллер 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 и сервисы

config/services.yaml:

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();

DQL: $em->createQuery('SELECT p FROM App\Entity\Product p').


Twig

{{ variable }}
{% if %} ... {% endif %}
{% for item in items %} ... {% endfor %}
{% extends 'base.html.twig' %}
{% block body %} ... {% endblock %}
{{ path('route_name', {id: 1}) }}

Конфигурация окружения

Файлы .env, .env.local, config/packages/*.yaml.

ПеременнаяНазначение
APP_ENVdev / prod / test
APP_SECRETКлюч для CSRF, cookies
DATABASE_URLDSN Doctrine

См. также


См. также

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