У якийсь момент я почав використовувати наступний код, щоб перевірити, чи поточна сторінка є адміністраторською сторінкою:
$route = \Drupal::routeMatch()->getRouteObject();
$is_admin = \Drupal::service('router.admin_context')->isAdminRoute($route);
Але я виявив, що це не вдається на сторінках редагування вузлів у куці__тит_завантаження ().
Як ми перевіряємо, чи знаходимось ми на сторінці адміністратора в Drupal 8? Щось на зразок path_is_admin () в Drupal 7?
Я виявив, що якщо я перевіряю той самий вузол для редагування шляху до сторінки із зовнішньої гачки_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);
Але якщо я спробую додати цей код у mock_entity_load за допомогою поточного шляху, я отримаю фатальний цикл.
Я думаю, де я застряг - це завантаження поточного маршруту в mock_entity_load.
_node_operation_route
увімкненою опцією також отримують цю опцію _admin_route
. \Drupal::service('router.admin_context')->isAdminRoute()
перевіряє цей прапор на поточний маршрут за замовчуванням.