W pewnym momencie zacząłem używać następującego kodu, aby sprawdzić, czy bieżąca strona jest stroną administracyjną:
$route = \Drupal::routeMatch()->getRouteObject();
$is_admin = \Drupal::service('router.admin_context')->isAdminRoute($route);
Ale odkryłem, że to się nie udaje na stronach edycji węzłów w hook_entity_load ().
Jak sprawdzamy, czy jesteśmy na stronie administratora w Drupal 8? Coś jak path_is_admin () w Drupal 7?
Odkryłem, że jeśli przetestuję tę samą ścieżkę edycji strony węzła z zewnątrz hook_entity_load, używając kodu na tej stronie ( https://api.drupal.org/api/drupal/includes%21path.inc/function/path_is_admin/7.x ) to działa.
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);
Ale jeśli spróbuję dodać ten kod do hook_entity_load przy użyciu bieżącej ścieżki, otrzymam krytyczną pętlę.
Myślę, że gdzie utknąłem, ładuję bieżącą trasę do hook_entity_load.
_node_operation_route
włączoną opcją również mają tę opcję _admin_route
. \Drupal::service('router.admin_context')->isAdminRoute()
domyślnie sprawdza tę flagę dla bieżącej trasy.