หากรายการมีเส้นทางเช่น /node/2, /user/1 หรือ admin/content และคุณจำเป็นต้องได้รับชื่อเส้นทางสำหรับเส้นทางเหล่านั้นที่จัดการโดยโมดูล Views คุณสามารถใช้รหัสที่คล้ายกับรหัสต่อไปนี้
ใช้ Drupal\Core\Path\PathValidatorInterface;
ใช้ Drupal\Core\Url;
ฟังก์ชัน _view_routes (เส้นทาง $ อาร์เรย์) {
$view_routes = [];
$path_validator = \Drupal::service('path.validator');
foreach (เส้นทาง $ เป็นเส้นทาง $) {
$view_route = '';
ถ้า ($url = $path_validator->getUrlIfValid($path)) {
$route_name = $url->getRouteName();
ถ้า (strpos($route_name, 'ดู') === 0) {
$view_route = $route_name;
}
}
$view_routes[$path] = $view_route;
}
ส่งคืน $view_routes;
}
PathValidator::getUrlIfValid()
คืน URL
คัดค้านหากเส้นทางที่ได้รับเป็นอาร์กิวเมนต์นั้นถูกต้องและเข้าถึงได้จากผู้ใช้ที่เข้าสู่ระบบในปัจจุบัน เพื่อทำความเข้าใจว่าพาธใดสำหรับเพจที่จัดการโดยโมดูล Views โค้ดควรคล้ายกับโค้ดต่อไปนี้
ใช้ Symfony\Component\Routing\Matcher\RequestMatcherInterface;
ฟังก์ชัน _view_routes (เส้นทาง $ อาร์เรย์) {
$view_routes = [];
$router = \Drupal::service('router.no_access_checks');
foreach (เส้นทาง $ เป็นเส้นทาง $) {
พยายาม {
$match = $router->match($path);
}
จับ (\ ข้อยกเว้น $e) {
// เส้นทางไม่ถูกต้องหรือเมธอด HTTP ในการเข้าถึง
// ไม่อนุญาตให้ใช้เส้นทาง
$view_routes[$path] = '';
ดำเนินต่อ;
}
$view_routes[$path] = (strpos($match['_route'], 'view.') === 0 ? $match['_route'] : '');
}
ส่งคืน $view_routes;
}