ある時点で、次のコードを使用して、現在のページが管理ページであるかどうかをテストし始めました。
$route = \Drupal::routeMatch()->getRouteObject();
$is_admin = \Drupal::service('router.admin_context')->isAdminRoute($route);
しかし、hook_entity_load()のノード編集ページでこれが失敗することがわかりました。
Drupal 8の管理ページにいるかどうかをどのようにテストしますか?Drupal 7のpath_is_admin()のようなものですか?
このページのコード(https://api.drupal.org/api/drupal/includes%21path.inc/function/path_is_admin/7.x)を使用して、hook_entity_loadの外側から同じノード編集ページのパスをテストすると、) できます。
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()
デフォルトでは、現在のルートのフラグをチェックします。