Routing Flashcards

1
Q

Что происходит между запуском index.php друпала и выдачей готового html, в
общих чертах?

A
Друпал загружает себя
Инициируется конфигурация
Кэш ранней страницы
Бд
Проверка доступа
Сессия
Кэш поздней страницы
Определение языка
Путь
Завершение процесса загрузки
Обработка запроса
Использование данных
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

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

A

Д7 - drupal_http_request

Д8
гет: \Drupal::request()->query->get(что-то)
пост: \Drupal::request()->request->get(что-то)

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

Каким образом можно программно создать путь (url) с содержимым (создать
Route)?

A

routing.yml:
defaults:
_controller: ‘\Drupal\example\Controller\ExampleController::content’
через RouteSubscriber

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

Как можно определить формат получаемых или возвращаемых данных?

A

Получаемых:
атрибут роута _format

Возвращаемых:
в контроллере:
return new JsonResponse(array());
BinaryFileResponse
RedirectResponse
Response(HTTP)
StreamedResponse
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Каким образом можно создать динамический путь?

A

{}

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

Каким образом можно вывести форму в кастомном пути? А сущность?

A

форма: параметр _form, который указывает на класс формы

Сущность:
_entity_view: entity_type.view_mode
_entity_list: entity_type

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

Каким образом можно передать информацию или объекты через
параметры?
i. Как нужно объявлять роут, если в должно присутствовать
несколько параметров-нод (node)?

A

В routing.yml:
path: /{fsdf} - для информации и объектов
для нескольких:
path: ‘…/{node_1}/{node_2}’
options:
parameters:
node_1:
type: entity.node
node_2:
type: entity.node

в контроллере:
function callback
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Каким образом можно настроить доступ для пути? (несколько способов)

i. _permission
ii. _role
iii. _entity_access
iv. Custom access

A

i. _permission
ii. _role
iii. _entity_access (_entity_access: ‘node.view’)
iv. Custom access ( _custom_access: ‘\Drupal\example\Controller\ExampleController::access’ + класс)

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

Каким образом можно настроить HTTP-методы, форматы данных или
http/https?

A

Методы:
_method: ‘GET|POST’

Форматы данных:
_content_type_format: json

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

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

A

RouteSubscriber и метод alterRoutes

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

Каким образом можно программно вернуть ошибку (например, 404)?
a. Каким образом можно изменить поведение при ошибке доступа?

A

throw new NotFoundHttpException();

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

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

A

Middleware API (посредники) — это обработчики HTTP-запроса. Благодаря посредникам, можно влиять на формирование запроса и ответа сайта на самом раннем уровне.
Для чего можно использовать Middleware?
Редиректить при определенных условиях.
Отвечать за кэширование (в ядре http_middleware.page_cache).
Отключать загрузку сайта если IP в черном списке (в ядре ban.middleware).
Управлять сессиями пользователей (в ядре http_middleware.session).

Middleware - сервис, реализующий HttpKernelInterface

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