public function BetterExposedFilters::validateOptionsForm in Better Exposed Filters 8.5
Same name and namespace in other branches
- 8.3 src/Plugin/views/exposed_form/BetterExposedFilters.php \Drupal\better_exposed_filters\Plugin\views\exposed_form\BetterExposedFilters::validateOptionsForm()
- 8.4 src/Plugin/views/exposed_form/BetterExposedFilters.php \Drupal\better_exposed_filters\Plugin\views\exposed_form\BetterExposedFilters::validateOptionsForm()
Validate the options form.
Overrides PluginBase::validateOptionsForm
File
- src/
Plugin/ views/ exposed_form/ BetterExposedFilters.php, line 560
Class
- BetterExposedFilters
- Exposed form plugin that provides a basic exposed form.
Namespace
Drupal\better_exposed_filters\Plugin\views\exposed_formCode
public function validateOptionsForm(&$form, FormStateInterface $form_state) {
// Drupal only passes in a part of the views form, but we need the complete
// form array for plugin subforms to work.
$parent_form = $form_state
->getCompleteForm();
// Save a shorthand to the BEF form.
$bef_form =& $form['bef'];
// Save a shorthand to the BEF options.
$bef_form_options = $form_state
->getValue([
'exposed_form_options',
'bef',
]);
parent::validateOptionsForm($form, $form_state);
// Skip plugin validation if we are switching between bef plugins.
$triggering_element = $form_state
->getTriggeringElement();
if ($triggering_element['#type'] !== 'submit') {
return;
}
// Shorthand for all filter handlers in this view.
/** @var \Drupal\views\Plugin\views\HandlerBase[] $filters */
$filters = $this->view->display_handler->handlers['filter'];
// Iterate over all filter, sort and pager plugins.
foreach ($bef_form_options as $type => $config) {
// Validate exposed filter configuration.
if ($type === 'filter') {
foreach ($config as $filter_id => $filter_options) {
$plugin_id = $filter_options['configuration']['plugin_id'] ?? NULL;
if (!$plugin_id) {
continue;
}
/** @var \Drupal\better_exposed_filters\Plugin\BetterExposedFiltersWidgetInterface $plugin */
$plugin = $this->filterWidgetManager
->createInstance($plugin_id);
$subform =& $bef_form[$type][$filter_id]['configuration'];
$subform_state = SubformState::createForSubform($subform, $parent_form, $form_state);
$plugin
->setView($this->view);
$plugin
->setViewsHandler($filters[$filter_id]);
$plugin
->validateConfigurationForm($subform, $subform_state);
}
}
elseif (in_array($type, [
'pager',
'sort',
])) {
$plugin_id = $config['configuration']['plugin_id'] ?? NULL;
if (!$plugin_id) {
continue;
}
// Use the correct widget manager.
if ($type === 'pager') {
/** @var \Drupal\better_exposed_filters\Plugin\BetterExposedFiltersWidgetInterface $plugin */
$plugin = $this->pagerWidgetManager
->createInstance($plugin_id);
}
else {
/** @var \Drupal\better_exposed_filters\Plugin\BetterExposedFiltersWidgetInterface $plugin */
$plugin = $this->sortWidgetManager
->createInstance($plugin_id);
}
$subform =& $bef_form[$type]['configuration'];
$subform_state = SubformState::createForSubform($subform, $parent_form, $form_state);
$plugin
->setView($this->view);
$plugin
->validateConfigurationForm($subform, $subform_state);
}
}
}