একসময় আমি নিম্নলিখিত কোডটি ব্যবহার করে পরীক্ষা করতে শুরু করেছি যে বর্তমান পৃষ্ঠাটি প্রশাসক পৃষ্ঠা কিনা:
$route = \Drupal::routeMatch()->getRouteObject();
$is_admin = \Drupal::service('router.admin_context')->isAdminRoute($route);
তবে আমি দেখতে পেয়েছি যে এটি নুক সম্পাদনা পৃষ্ঠাগুলিতে হুক_এন্টিটি_লোড () এ ব্যর্থ হয়।
আমরা ড্রুপাল 8 এডমিন পৃষ্ঠায় থাকলে কীভাবে পরীক্ষা করব? ড্রুপাল 7 তে পথ_স_এডমিনের মতো কিছু?
আমি দেখতে পেয়েছি যে আমি যদি এই পৃষ্ঠায় কোড ব্যবহার করে হুক_এন্টিটি_লোডের বাইরের একই নোড সম্পাদনা পৃষ্ঠাটির পরীক্ষা করি তবে ( 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);
তবে যদি আমি বর্তমান পথটি ব্যবহার করে এই কোডটি হুক_এন্টিটি_লোডে যুক্ত করার চেষ্টা করি তবে আমি একটি মারাত্মক লুপ পেয়েছি।
আমার মনে হয় আমি যেখানে আটকেছি সেখানে হুক_এনটিটি_লোডে বর্তমান রুটটি লোড করা হচ্ছে।
_node_operation_route
সক্ষম করে সমস্ত রুটকেও বিকল্প পেতে সক্ষম করে _admin_route
। \Drupal::service('router.admin_context')->isAdminRoute()
ডিফল্টরূপে বর্তমান রুটের জন্য পতাকাটি পরীক্ষা করে।