Tại một số điểm, tôi bắt đầu sử dụng mã sau đây để kiểm tra xem trang hiện tại có phải là trang quản trị hay không:
$route = \Drupal::routeMatch()->getRouteObject();
$is_admin = \Drupal::service('router.admin_context')->isAdminRoute($route);
Nhưng tôi thấy rằng điều này không thành công trên các trang chỉnh sửa nút trong hook_entity_load ().
Làm cách nào để kiểm tra nếu chúng tôi ở trên trang quản trị trong Drupal 8? Một cái gì đó giống như path_is_admin () trong Drupal 7?
Tôi thấy rằng nếu tôi kiểm tra cùng một đường dẫn trang chỉnh sửa nút từ bên ngoài hook_entity_load, sử dụng mã trên trang này ( https://api.drupal.org/api/drupal/includes%21path.inc/feft/path_is_admin/7.x ) nó hoạt động.
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);
Nhưng nếu tôi cố gắng thêm mã này vào hook_entity_load bằng đường dẫn hiện tại, tôi sẽ nhận được một vòng lặp nghiêm trọng.
Tôi nghĩ nơi tôi bị kẹt đang tải tuyến đường hiện tại trong hook_entity_load.
_node_operation_route
được kích hoạt cũng có được tùy chọn _admin_route
. \Drupal::service('router.admin_context')->isAdminRoute()
kiểm tra cờ đó cho tuyến hiện tại theo mặc định.