В какой-то момент я начал использовать следующий код, чтобы проверить, является ли текущая страница страницей администратора:
$route = \Drupal::routeMatch()->getRouteObject();
$is_admin = \Drupal::service('router.admin_context')->isAdminRoute($route);
Но я обнаружил, что это не удается на страницах редактирования узла в hook_entity_load ().
Как мы проверяем, если мы находимся на странице администратора в Drupal 8? Что-то вроде path_is_admin () в Drupal 7?
Я обнаружил, что если я проверяю путь редактирования страницы того же узла извне hook_entity_load, используя код на этой странице ( https://api.drupal.org/api/drupal/includes%21path.inc/function/path_is_admin/7.x ) оно работает.
use Symfony\Component\HttpFoundation\Request;
use Symfony\Cmf\Component\Routing\RouteObjectInterface;
$path = '/node/75/edit';
$request = Request::create($path);
$route_match = \Drupal::service('router.no_access_checks')->matchRequest($request);
$route = $route_match[RouteObjectInterface::ROUTE_OBJECT];
$is_admin = \Drupal::service('router.admin_context')->isAdminRoute($route);
Но если я попытаюсь добавить этот код в hook_entity_load, используя текущий путь, я получу фатальный цикл.
Я думаю, что я застрял, загружая текущий маршрут в hook_entity_load.
_node_operation_route
включенной опцией также получают опцию _admin_route
. \Drupal::service('router.admin_context')->isAdminRoute()
проверяет этот флаг для текущего маршрута по умолчанию.