Irgendwann habe ich angefangen, den folgenden Code zu verwenden, um zu testen, ob die aktuelle Seite eine Administrationsseite ist:
$route = \Drupal::routeMatch()->getRouteObject();
$is_admin = \Drupal::service('router.admin_context')->isAdminRoute($route);
Ich habe jedoch festgestellt, dass dies auf Knotenbearbeitungsseiten in hook_entity_load () fehlschlägt.
Wie testen wir, ob wir uns in Drupal 8 auf einer Administrationsseite befinden? So etwas wie path_is_admin () in Drupal 7?
Ich habe festgestellt, dass, wenn ich denselben Knotenbearbeitungsseitenpfad von außerhalb von hook_entity_load teste, der Code auf dieser Seite verwendet wird ( https://api.drupal.org/api/drupal/includes%21path.inc/function/path_is_admin/7.x) ) Es klappt.
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);
Wenn ich jedoch versuche, diesen Code unter Verwendung des aktuellen Pfads in hook_entity_load hinzuzufügen, wird eine schwerwiegende Schleife angezeigt.
Ich denke, wo ich feststecke, wird die aktuelle Route in hook_entity_load geladen.
_node_operation_route
aktivierter Option auch die Option _admin_route
. \Drupal::service('router.admin_context')->isAdminRoute()
Überprüft dieses Flag standardmäßig auf die aktuelle Route.