function DisplayPluginBase::getHandlers

Same name and namespace in other branches
  1. 9 core/modules/views/src/Plugin/views/display/DisplayPluginBase.php \Drupal\views\Plugin\views\display\DisplayPluginBase::getHandlers()
  2. 8.9.x core/modules/views/src/Plugin/views/display/DisplayPluginBase.php \Drupal\views\Plugin\views\display\DisplayPluginBase::getHandlers()
  3. 11.x core/modules/views/src/Plugin/views/display/DisplayPluginBase.php \Drupal\views\Plugin\views\display\DisplayPluginBase::getHandlers()

Overrides DisplayPluginInterface::getHandlers

9 calls to DisplayPluginBase::getHandlers()
DisplayPluginBase::calculateCacheMetadata in core/modules/views/src/Plugin/views/display/DisplayPluginBase.php
Calculates the display's cache metadata by inspecting each handler/plugin.
DisplayPluginBase::getAllHandlers in core/modules/views/src/Plugin/views/display/DisplayPluginBase.php
Gets all the handlers used by the display.
DisplayPluginBase::getFieldLabels in core/modules/views/src/Plugin/views/display/DisplayPluginBase.php
Retrieves a list of fields for the current display.
DisplayPluginBase::getHandler in core/modules/views/src/Plugin/views/display/DisplayPluginBase.php
Get the handler object for a single handler.
DisplayPluginBase::isIdentifierUnique in core/modules/views/src/Plugin/views/display/DisplayPluginBase.php
Checks if the provided identifier is unique.

... See full list

File

core/modules/views/src/Plugin/views/display/DisplayPluginBase.php, line 853

Class

DisplayPluginBase
Base class for views display plugins.

Namespace

Drupal\views\Plugin\views\display

Code

public function &getHandlers($type) {
    if (!isset($this->handlers[$type])) {
        $this->handlers[$type] = [];
        $types = ViewExecutable::getHandlerTypes();
        $plural = $types[$type]['plural'];
        // Cast to an array so that if the display does not have any handlers of
        // this type there is no PHP error.
        foreach ((array) $this->getOption($plural) as $id => $info) {
            // If this is during form submission and there are temporary options
            // which can only appear if the view is in the edit cache, use those
            // options instead. This is used for AJAX multi-step stuff.
            if ($this->view
                ->getRequest()->request
                ->get('form_id') && isset($this->view->temporary_options[$type][$id])) {
                $info = $this->view->temporary_options[$type][$id];
            }
            if ($info['id'] != $id) {
                $info['id'] = $id;
            }
            // If aggregation is on, the group type might override the actual
            // handler that is in use. This piece of code checks that and,
            // if necessary, sets the override handler.
            $override = NULL;
            if ($this->useGroupBy() && !empty($info['group_type'])) {
                if (empty($this->view->query)) {
                    $this->view
                        ->initQuery();
                }
                $aggregate = $this->view->query
                    ->getAggregationInfo();
                if (!empty($aggregate[$info['group_type']]['handler'][$type])) {
                    $override = $aggregate[$info['group_type']]['handler'][$type];
                }
            }
            if (!empty($types[$type]['type'])) {
                $handler_type = $types[$type]['type'];
            }
            else {
                $handler_type = $type;
            }
            if ($handler = Views::handlerManager($handler_type)->getHandler($info, $override)) {
                // Special override for area types so they know where they come from.
                if ($handler instanceof AreaPluginBase) {
                    $handler->areaType = $type;
                }
                $handler->init($this->view, $this, $info);
                $this->handlers[$type][$id] =& $handler;
            }
            // Prevent reference problems.
            unset($handler);
        }
    }
    return $this->handlers[$type];
}

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