public function ViewExecutable::execute in Drupal 8
Same name and namespace in other branches
- 9 core/modules/views/src/ViewExecutable.php \Drupal\views\ViewExecutable::execute()
Executes the view's query.
Parameters
string $display_id: The machine name of the display, which should be executed.
Return value
bool TRUE if the view execution was successful, FALSE otherwise. For example, an argument could stop the process.
2 calls to ViewExecutable::execute()
- ViewExecutable::render in core/
modules/ views/ src/ ViewExecutable.php - Renders this view for a certain display.
- ViewExecutable::__wakeup in core/
modules/ views/ src/ ViewExecutable.php - Magic method implementation to unserialize the view executable.
File
- core/
modules/ views/ src/ ViewExecutable.php, line 1389
Class
- ViewExecutable
- Represents a view as a whole.
Namespace
Drupal\viewsCode
public function execute($display_id = NULL) {
if (empty($this->built)) {
if (!$this
->build($display_id)) {
return FALSE;
}
}
if (!empty($this->executed)) {
return TRUE;
}
// Don't allow to use deactivated displays, but display them on the live preview.
if (!$this->display_handler
->isEnabled() && empty($this->live_preview)) {
$this->build_info['fail'] = TRUE;
return FALSE;
}
// Let modules modify the view just prior to executing it.
$module_handler = \Drupal::moduleHandler();
$module_handler
->invokeAll('views_pre_execute', [
$this,
]);
// Check for already-cached results.
/** @var \Drupal\views\Plugin\views\cache\CachePluginBase $cache */
if (!empty($this->live_preview)) {
$cache = Views::pluginManager('cache')
->createInstance('none');
}
else {
$cache = $this->display_handler
->getPlugin('cache');
}
if ($cache
->cacheGet('results')) {
if ($this
->usePager()) {
$this->pager->total_items = $this->total_rows;
$this->pager
->updatePageInfo();
}
}
else {
$this->query
->execute($this);
// Enforce the array key rule as documented in
// views_plugin_query::execute().
$this->result = array_values($this->result);
$this
->_postExecute();
$cache
->cacheSet('results');
}
// Let modules modify the view just after executing it.
$module_handler
->invokeAll('views_post_execute', [
$this,
]);
return $this->executed = TRUE;
}