function Mapping::buildOptionsForm
Same name in other branches
- 8.9.x core/modules/views/src/Plugin/views/style/Mapping.php \Drupal\views\Plugin\views\style\Mapping::buildOptionsForm()
- 10 core/modules/views/src/Plugin/views/style/Mapping.php \Drupal\views\Plugin\views\style\Mapping::buildOptionsForm()
- 11.x core/modules/views/src/Plugin/views/style/Mapping.php \Drupal\views\Plugin\views\style\Mapping::buildOptionsForm()
Overrides StylePluginBase::buildOptionsForm
File
-
core/
modules/ views/ src/ Plugin/ views/ style/ Mapping.php, line 69
Class
- Mapping
- Allows fields to be mapped to specific use cases.
Namespace
Drupal\views\Plugin\views\styleCode
public function buildOptionsForm(&$form, FormStateInterface $form_state) {
parent::buildOptionsForm($form, $form_state);
// Get the mapping.
$mapping = $this->defineMapping();
// Restrict the list of defaults to the mapping, in case they have changed.
$options = array_intersect_key($this->options['mapping'], $mapping);
// Get the labels of the fields added to this display.
$field_labels = $this->displayHandler
->getFieldLabels();
// Provide some default values.
$defaults = [
'#type' => 'select',
'#required' => FALSE,
'#multiple' => FALSE,
];
// For each mapping, add a select element to the form.
foreach ($options as $key => $value) {
// If the field is optional, add a 'None' value to the top of the options.
$field_options = [];
$required = !empty($mapping[$key]['#required']);
if (!$required && empty($mapping[$key]['#multiple'])) {
$field_options = [
'' => $this->t('- None -'),
];
}
$field_options += $field_labels;
// Optionally filter the available fields.
if (isset($mapping[$key]['#filter'])) {
$this->view
->initHandlers();
$filter = $mapping[$key]['#filter'];
$this::$filter($field_options);
unset($mapping[$key]['#filter']);
}
// These values must always be set.
$overrides = [
'#options' => $field_options,
'#default_value' => $options[$key],
];
// Optionally allow the select to be toggleable.
if (!empty($mapping[$key]['#toggle'])) {
$form['mapping']["toggle_{$key}"] = [
'#type' => 'checkbox',
'#title' => $this->t('Use a custom %field_name', [
'%field_name' => strtolower($mapping[$key]['#title']),
]),
'#default_value' => $this->options['mapping']["toggle_{$key}"],
];
$overrides['#states']['visible'][':input[name="style_options[mapping][' . "toggle_{$key}" . ']"]'] = [
'checked' => TRUE,
];
}
$form['mapping'][$key] = $overrides + $mapping[$key] + $defaults;
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.