function ViewsHooks::viewsPreRender

Implements hook_views_pre_render().

Attributes

#[Hook('views_pre_render')]

File

core/modules/views/src/Hook/ViewsHooks.php, line 64

Class

ViewsHooks
Hook implementations for views.

Namespace

Drupal\views\Hook

Code

public function viewsPreRender($view) : void {
  // If using AJAX, send identifying data about this view.
  if ($view->ajaxEnabled() && empty($view->is_attachment) && empty($view->live_preview)) {
    $view->element['#attached']['drupalSettings']['views'] = [
      'ajax_path' => Url::fromRoute('views.ajax')->toString(),
      'ajaxViews' => [
        'views_dom_id:' . $view->dom_id => [
          'view_name' => $view->storage
            ->id(),
          'view_display_id' => $view->current_display,
          'view_args' => Html::escape(implode('/', $view->args)),
          'view_path' => Html::escape(\Drupal::service('path.current')->getPath()),
          'view_base_path' => $view->getPath(),
          'view_dom_id' => $view->dom_id,
          // To fit multiple views on a page, the programmer may have
          // overridden the display's pager_element.
'pager_element' => isset($view->pager) ? $view->pager
            ->getPagerId() : 0,
        ],
      ],
    ];
    $view->element['#attached']['library'][] = 'views/views.ajax';
  }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.