Routing Flashcards
Что происходит между запуском index.php друпала и выдачей готового html, в
общих чертах?
Друпал загружает себя Инициируется конфигурация Кэш ранней страницы Бд Проверка доступа Сессия Кэш поздней страницы Определение языка Путь Завершение процесса загрузки Обработка запроса Использование данных
Как следует обрабатывать параметры запроса? (Request) Можно ли
использовать $_GET, $_POST? Если да, то в каких?
Д7 - drupal_http_request
Д8
гет: \Drupal::request()->query->get(что-то)
пост: \Drupal::request()->request->get(что-то)
Каким образом можно программно создать путь (url) с содержимым (создать
Route)?
routing.yml:
defaults:
_controller: ‘\Drupal\example\Controller\ExampleController::content’
через RouteSubscriber
Как можно определить формат получаемых или возвращаемых данных?
Получаемых:
атрибут роута _format
Возвращаемых: в контроллере: return new JsonResponse(array()); BinaryFileResponse RedirectResponse Response(HTTP) StreamedResponse
Каким образом можно создать динамический путь?
{}
Каким образом можно вывести форму в кастомном пути? А сущность?
форма: параметр _form, который указывает на класс формы
Сущность:
_entity_view: entity_type.view_mode
_entity_list: entity_type
Каким образом можно передать информацию или объекты через
параметры?
i. Как нужно объявлять роут, если в должно присутствовать
несколько параметров-нод (node)?
В routing.yml:
path: /{fsdf} - для информации и объектов
для нескольких:
path: ‘…/{node_1}/{node_2}’
options:
parameters:
node_1:
type: entity.node
node_2:
type: entity.node
в контроллере: function callback
Каким образом можно настроить доступ для пути? (несколько способов)
i. _permission
ii. _role
iii. _entity_access
iv. Custom access
i. _permission
ii. _role
iii. _entity_access (_entity_access: ‘node.view’)
iv. Custom access ( _custom_access: ‘\Drupal\example\Controller\ExampleController::access’ + класс)
Каким образом можно настроить HTTP-методы, форматы данных или
http/https?
Методы:
_method: ‘GET|POST’
Форматы данных:
_content_type_format: json
Каким образом можно изменить уже существующий путь?
RouteSubscriber и метод alterRoutes
Каким образом можно программно вернуть ошибку (например, 404)?
a. Каким образом можно изменить поведение при ошибке доступа?
throw new NotFoundHttpException();
Что такое Middleware? Для чего используется? Как создать свой?
Middleware API (посредники) — это обработчики HTTP-запроса. Благодаря посредникам, можно влиять на формирование запроса и ответа сайта на самом раннем уровне.
Для чего можно использовать Middleware?
Редиректить при определенных условиях.
Отвечать за кэширование (в ядре http_middleware.page_cache).
Отключать загрузку сайта если IP в черном списке (в ядре ban.middleware).
Управлять сессиями пользователей (в ядре http_middleware.session).
Middleware - сервис, реализующий HttpKernelInterface