3 namespace Drupal\webprofiler\DataCollector;
5 use Drupal\webprofiler\DrupalDataCollectorInterface;
6 use Drupal\Core\Routing\RouteProviderInterface;
7 use Drupal\Core\StringTranslation\StringTranslationTrait;
8 use Symfony\Component\HttpFoundation\Request;
9 use Symfony\Component\HttpFoundation\Response;
10 use Symfony\Component\HttpKernel\DataCollector\DataCollector;
13 * Provides a data collector which shows all available routes.
15 class RoutingDataCollector extends DataCollector implements DrupalDataCollectorInterface {
17 use StringTranslationTrait, DrupalDataCollectorTrait;
22 * @var \Drupal\Core\Routing\RouteProviderInterface
24 protected $routeProvider;
27 * Constructs a new RoutingDataCollector.
29 * @param \Drupal\Core\Routing\RouteProviderInterface $routeProvider
32 public function __construct(RouteProviderInterface $routeProvider) {
33 $this->routeProvider = $routeProvider;
39 public function collect(Request $request, Response $response, \Exception $exception = NULL) {
40 $this->data['routing'] = [];
41 foreach ($this->routeProvider->getAllRoutes() as $route_name => $route) {
42 // @TODO Find a better visual representation.
43 $this->data['routing'][] = [
44 'name' => $route_name,
45 'path' => $route->getPath(),
53 public function getRoutesCount() {
54 return count($this->routing());
58 * Twig callback for displaying the routes.
60 public function routing() {
61 return $this->data['routing'];
67 public function getTitle() {
68 return $this->t('Routing');
74 public function getName() {
81 public function getPanelSummary() {
82 return $this->t('Defined routes: @route', ['@route' => $this->getRoutesCount()]);
88 public function getIcon() {
89 return 'iVBORw0KGgoAAAANSUhEUgAAABUAAAAcCAYAAACOGPReAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPxJREFUeNrkVsERREAQ7D0koXwlIAISkIGXvwAkoJSfHITg5SMUVR4eMuCxZ1xxV+5uuTL30lV8bPX09PSuFVJKcOOGP+DipLrrusoFdV1Lz/NgmiaKosC0XrAopYT0fc/f/jAMa41Pj23bkrpi9bRpGmRZ9lRKFSzLkl9UHMI4jijLcuaaSZMkQdd1fNMn5r0EHIFhGEjTlDenYRjCcZyHUnqRwXEcz77sYepM+Z1yTOEXZEFVVYcUba2iItsNcbr9IAiw5HMd1CJZtU1VpG3bIooi3gPF933keY43pb9gb1Bskdrap58luMjvRNO04wcK18RfIa59mbgLMAASuWsKAyoEhgAAAABJRU5ErkJggg==';