कुछ बिंदु पर मैंने परीक्षण के लिए निम्न कोड का उपयोग करना शुरू कर दिया है यदि वर्तमान पृष्ठ एक व्यवस्थापक पृष्ठ है:
$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/ath_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()
डिफ़ॉल्ट रूप से वर्तमान मार्ग के लिए ध्वज की जाँच करता है।