You are here

public function EventInfoController::eventList in Devel 8

Same name and namespace in other branches
  1. 8.3 src/Controller/EventInfoController.php \Drupal\devel\Controller\EventInfoController::eventList()
  2. 8.2 src/Controller/EventInfoController.php \Drupal\devel\Controller\EventInfoController::eventList()
  3. 4.x src/Controller/EventInfoController.php \Drupal\devel\Controller\EventInfoController::eventList()

Builds the events overview page.

Return value

array A render array as expected by the renderer.

1 string reference to 'EventInfoController::eventList'
devel.routing.yml in ./devel.routing.yml
devel.routing.yml

File

src/Controller/EventInfoController.php, line 46

Class

EventInfoController
Provides route responses for the event info page.

Namespace

Drupal\devel\Controller

Code

public function eventList() {
  $headers = [
    'name' => [
      'data' => $this
        ->t('Event Name'),
      'class' => 'visually-hidden',
    ],
    'callable' => $this
      ->t('Callable'),
    'priority' => $this
      ->t('Priority'),
  ];
  $event_listeners = $this->eventDispatcher
    ->getListeners();
  ksort($event_listeners);
  $rows = [];
  foreach ($event_listeners as $event_name => $listeners) {
    $rows[][] = [
      'data' => $event_name,
      'class' => 'table-filter-text-source devel-event-name-header',
      'colspan' => '3',
      'header' => TRUE,
    ];
    foreach ($listeners as $priority => $listener) {
      $row['name'] = [
        'data' => $event_name,
        'class' => 'table-filter-text-source visually-hidden',
      ];
      $row['class'] = [
        'data' => $this
          ->resolveCallableName($listener),
      ];
      $row['priority'] = [
        'data' => $priority,
      ];
      $rows[] = $row;
    }
  }
  $output['#attached']['library'][] = 'system/drupal.system.modules';
  $output['filters'] = [
    '#type' => 'container',
    '#attributes' => [
      'class' => [
        'table-filter',
        'js-show',
      ],
    ],
  ];
  $output['filters']['name'] = [
    '#type' => 'search',
    '#title' => $this
      ->t('Search'),
    '#size' => 30,
    '#placeholder' => $this
      ->t('Enter event name'),
    '#attributes' => [
      'class' => [
        'table-filter-text',
      ],
      'data-table' => '.devel-filter-text',
      'autocomplete' => 'off',
      'title' => $this
        ->t('Enter a part of the event name to filter by.'),
    ],
  ];
  $output['events'] = [
    '#type' => 'table',
    '#header' => $headers,
    '#rows' => $rows,
    '#empty' => $this
      ->t('No events found.'),
    '#attributes' => [
      'class' => [
        'devel-event-list',
        'devel-filter-text',
      ],
    ],
  ];
  return $output;
}