เมื่อถึงจุดหนึ่งฉันเริ่มใช้รหัสต่อไปนี้เพื่อทดสอบว่าหน้าปัจจุบันเป็นหน้าผู้ดูแลระบบหรือไม่:
$route = \Drupal::routeMatch()->getRouteObject();
$is_admin = \Drupal::service('router.admin_context')->isAdminRoute($route);
แต่ฉันพบว่าสิ่งนี้ล้มเหลวบนโหนดแก้ไขหน้าใน hook_entity_load ()
เราจะทดสอบว่าเราอยู่ในหน้าผู้ดูแลระบบใน Drupal 8 ได้อย่างไร มีบางอย่างที่เหมือนกับ path_is_admin () ใน Drupal 7 ใช่ไหม
ฉันพบว่าหากฉันทดสอบโหนดเดียวกันแก้ไขเส้นทางของหน้าเว็บจาก 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()