public function DisplayPluginBase::getHandlers in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/modules/views/src/Plugin/views/display/DisplayPluginBase.php \Drupal\views\Plugin\views\display\DisplayPluginBase::getHandlers()
Get a full array of handlers for $type. This caches them.
Return value
\Drupal\views\Plugin\views\ViewsHandlerInterface[]
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.
File
- core/
modules/ views/ src/ Plugin/ views/ display/ DisplayPluginBase.php, line 846 - Contains \Drupal\views\Plugin\views\display\DisplayPluginBase.
Class
- DisplayPluginBase
- Base class for views display plugins.
Namespace
Drupal\views\Plugin\views\displayCode
public function &getHandlers($type) {
if (!isset($this->handlers[$type])) {
$this->handlers[$type] = array();
$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];
}