어느 시점에서 다음 코드를 사용하여 현재 페이지가 관리자 페이지인지 테스트하기 시작했습니다.
$route = \Drupal::routeMatch()->getRouteObject();
$is_admin = \Drupal::service('router.admin_context')->isAdminRoute($route);
그러나 hook_entity_load ()의 노드 편집 페이지에서 이것이 실패한다는 것을 알았습니다.
Drupal 8의 관리자 페이지에 있는지 어떻게 테스트합니까? Drupal 7의 path_is_admin ()과 같은 것이 있습니까?
이 페이지의 코드를 사용하여 hook_entity_load 외부에서 동일한 노드 편집 페이지 경로를 테스트하면 ( https://api.drupal.org/api/drupal/includes%21path.inc/function/path_is_admin/7.x ) 효과가있다.
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);
그러나 현재 경로를 사용 하여이 코드를 hook_entity_load에 추가하려고하면 치명적인 루프가 발생합니다.
내가 붙어있는 곳은 hook_entity_load에 현재 경로를로드하는 것 같습니다.
_node_operation_route
활성화 된 모든 경로 도 옵션 을 얻습니다 _admin_route
. \Drupal::service('router.admin_context')->isAdminRoute()
기본적으로 현재 경로에 대한 플래그를 확인합니다.