function ViewUI::submitItemAdd
Same name in other branches
- 9 core/modules/views_ui/src/ViewUI.php \Drupal\views_ui\ViewUI::submitItemAdd()
- 8.9.x core/modules/views_ui/src/ViewUI.php \Drupal\views_ui\ViewUI::submitItemAdd()
- 10 core/modules/views_ui/src/ViewUI.php \Drupal\views_ui\ViewUI::submitItemAdd()
Submit handler for adding new item(s) to a view.
File
-
core/
modules/ views_ui/ src/ ViewUI.php, line 437
Class
- ViewUI
- Stores UI related temporary settings.
Namespace
Drupal\views_uiCode
public function submitItemAdd($form, FormStateInterface $form_state) {
$type = $form_state->get('type');
$types = ViewExecutable::getHandlerTypes();
$section = $types[$type]['plural'];
$display_id = $form_state->get('display_id');
// Handle the override select.
[
$was_defaulted,
$is_defaulted,
] = $this->getOverrideValues($form, $form_state);
if ($was_defaulted && !$is_defaulted) {
// We were using the default display's values, but we're now overriding
// the default display and saving values specific to this display.
$display =& $this->getExecutable()->displayHandlers
->get($display_id);
// setOverride toggles the override of this section.
$display->setOverride($section);
}
elseif (!$was_defaulted && $is_defaulted) {
// We used to have an override for this display, but the user now wants
// to go back to the default display.
// Overwrite the default display with the current form values, and make
// the current display use the new default values.
$display =& $this->getExecutable()->displayHandlers
->get($display_id);
// optionsOverride toggles the override of this section.
$display->setOverride($section);
}
if (!$form_state->isValueEmpty('name') && is_array($form_state->getValue('name'))) {
// Loop through each of the items that were checked and add them to the view.
foreach (array_keys(array_filter($form_state->getValue('name'))) as $field) {
[
$table,
$field,
] = explode('.', $field, 2);
if ($cut = strpos($field, '$')) {
$field = substr($field, 0, $cut);
}
$id = $this->getExecutable()
->addHandler($display_id, $type, $table, $field);
// Check to see if we have group by settings
$key = $type;
// Footer,header and empty text have a different internal handler type(area).
if (isset($types[$type]['type'])) {
$key = $types[$type]['type'];
}
$item = [
'table' => $table,
'field' => $field,
];
$handler = Views::handlerManager($key)->getHandler($item);
if ($this->getExecutable()->displayHandlers
->get('default')
->useGroupBy() && $handler->usesGroupBy()) {
$this->addFormToStack('handler-group', $display_id, $type, $id);
}
// Check to see if this type has settings, if so add the settings form first
if ($handler && $handler->hasExtraOptions()) {
$this->addFormToStack('handler-extra', $display_id, $type, $id);
}
// Then add the form to the stack
$this->addFormToStack('handler', $display_id, $type, $id);
}
}
if (isset($this->form_cache)) {
unset($this->form_cache);
}
// Store in cache
$this->cacheSet();
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.