À un moment donné, j'ai commencé à utiliser le code suivant pour tester si la page actuelle est une page d'administration:
$route = \Drupal::routeMatch()->getRouteObject();
$is_admin = \Drupal::service('router.admin_context')->isAdminRoute($route);
Mais j'ai trouvé que cela échoue sur les pages d'édition de noeud dans hook_entity_load ().
Comment tester si nous sommes sur une page d'administration dans Drupal 8? Quelque chose comme path_is_admin () dans Drupal 7?
J'ai constaté que si je testais le même chemin de page de modification de nœud depuis l'extérieur hook_entity_load, en utilisant le code de cette page ( https://api.drupal.org/api/drupal/includes%21path.inc/function/path_is_admin/7.x ) Ça marche.
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);
Mais si j'essaye d'ajouter ce code dans hook_entity_load en utilisant le chemin actuel, j'obtiens une boucle fatale.
Je pense que là où je suis bloqué, c'est le chargement de la route actuelle dans hook_entity_load.
_node_operation_route
activée obtenir également l'option _admin_route
. \Drupal::service('router.admin_context')->isAdminRoute()
vérifie cet indicateur pour l'itinéraire actuel par défaut.