En algún momento comencé a usar el siguiente código para probar si la página actual es una página de administración:
$route = \Drupal::routeMatch()->getRouteObject();
$is_admin = \Drupal::service('router.admin_context')->isAdminRoute($route);
Pero descubrí que esto falla en las páginas de edición de nodos en hook_entity_load ().
¿Cómo probamos si estamos en una página de administrador en Drupal 8? ¿Algo así como path_is_admin () en Drupal 7?
Descubrí que si pruebo la misma ruta de la página de edición de nodos desde fuera de hook_entity_load, usando el código de esta 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);
Pero si trato de agregar este código en hook_entity_load usando la ruta actual, me sale un bucle fatal.
Creo que donde estoy atascado está cargando la ruta actual en hook_entity_load.
_node_operation_route
habilitada también obtengan la opción _admin_route
. \Drupal::service('router.admin_context')->isAdminRoute()
comprueba esa bandera para la ruta actual de forma predeterminada.