Em algum momento, comecei a usar o código a seguir para testar se a página atual é uma página de administrador:
$route = \Drupal::routeMatch()->getRouteObject();
$is_admin = \Drupal::service('router.admin_context')->isAdminRoute($route);
Mas descobri que isso falha nas páginas de edição do nó em hook_entity_load ().
Como testamos se estamos em uma página de administrador no Drupal 8? Algo como path_is_admin () no Drupal 7?
Descobri que se eu testar o mesmo caminho da página de edição de nó de fora de hook_entity_load, usando o código nesta página ( https://api.drupal.org/api/drupal/includes%21path.inc/function/path_is_admin/7.x ) funciona.
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);
Mas se eu tentar adicionar esse código em hook_entity_load usando o caminho atual, recebo um loop fatal.
Acho que onde estou preso está carregando a rota atual em hook_entity_load.
_node_operation_route
ativada também obtenham a opção _admin_route
. \Drupal::service('router.admin_context')->isAdminRoute()
verifica esse sinalizador para a rota atual por padrão.