Routing Flashcards

1
Q

Как следует обрабатывать параметры запроса? (Request) Можно ли
использовать $_GET, $_POST? Если да, то в каких случаях?

A

-Запросы в Drupal представлены классом Request компонента Symfony HttpFoundation. Параметры могут быть получены через паблик свойства класса:
request — эквивалент $_POST;
query — эквивалент $_GET ($request->query->get(‘name’));
cookies — эквивалент $_COOKIE;
attributes — эквивалента нет, используется для хранения дополнительных данных;
files — эквивалент $_FILES;
server — эквивалент $_SERVER;
headers — в основном эквивалент подгруппе $_SERVER ($request->headers->get(‘User-Agent’)).
Каждое свойство — это экземпляр класса ParameterBag (класс, который представляет собой контейнер для хранения пары ключ/значение). Методы:
get - получить значения по имени параметра.
all - получить все параметры или используется для получения массива значений параметра
https://nightdevel.ru/urok-3-requests-i-responses-routing-i-kontrollery
https://symfony.com/doc/current/components/http_foundation.html
- На ранних этапах загрузки, когда Request недоступен, можно использовать $_GET, $_POST.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Как создать новый роут?

A

В корне директории модуля создается файл module_name.routing.yml, в котором описывается имя роута, path(путь), обработчик(метод контроллера или формы), права доступа.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Каким образом можно изменить уже существующий роут?

A

Создается класс, наследующий RouteSubscriberBase, в котором реализуется метод alterRoutes. Изменять созданные роуты можно путём манипуляций с объектом RouteCollection. После создания класс регистрируется как сервис.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Что такое Middleware? Для чего используется? Как создать свой?

A
  • Сервис, обрабатывающий http-запрос,
  • используется для того чтобы:
    • Редиректить при определенных условиях.
    • Лимитировать количество запросов с определенных IP.
  • Создается класс имплементирующий интерфейс HttpKernelInterface Обязательный метод handle() отвечает за всю логику. Если ваш Middleware не responder(может вернуть уже готовый ответ сервера (Response)), то вы должны всегда возвращать return $this->httpKernel->handle($request, $type, $catch);, так обработка запроса передается другим посредникам.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly