better_exposed_filters-8.x-4.x-dev/src/Plugin/better_exposed_filters/sort/Links.php
src/Plugin/better_exposed_filters/sort/Links.php
<?php
namespace Drupal\better_exposed_filters\Plugin\better_exposed_filters\sort;
use Drupal\Core\Form\FormStateInterface;
/**
* Radio Buttons sort widget implementation.
*
* @BetterExposedFiltersSortWidget(
* id = "bef_links",
* label = @Translation("Links"),
* )
*/
class Links extends SortWidgetBase {
/**
* {@inheritdoc}
*/
public function exposedFormAlter(array &$form, FormStateInterface $form_state): void {
$view = $form_state->get('view');
parent::exposedFormAlter($form, $form_state);
foreach ($this->sortElements as $element) {
if (!empty($form[$element])) {
$form[$element]['#theme'] = 'bef_links';
// Exposed form displayed as blocks can appear on pages other than
// the view results appear on. This can cause problems with
// select_as_links options as they will use the wrong path. We
// provide a hint for theme functions to correct this.
$form[$element]['#bef_path'] = $this->getExposedFormActionUrl($form_state);
if ($view->ajaxEnabled() || $view->display_handler->ajaxEnabled()) {
$form[$element]['#attributes']['class'][] = 'bef-links-use-ajax';
$form['#attached']['library'][] = 'better_exposed_filters/links_use_ajax';
}
}
}
}
}
