Drupal → Подменить значение раскрытого фильтра Views
На dru.io задали хороший вопрос — Как подменить значение раскрытого фильтра.
Ответ:
Drupal 8
/** * Implements hook_form_FORM_ID_alter(): views_exposed_form. */ function MODULENAME_form_views_exposed_form_alter(array &$form, FormStateInterface $form_state) { $view = $form_state->get('view'); /** @var ViewExecutable $view */ if ($view->id() == 'myview' && $view->current_display == 'page') { array_unshift($form['#submit'], 'MODULENAME_form_views_exposed_form_submit'); } } /** * Custom submit callback for views exposed form. */ function MODULENAME_form_views_exposed_form_submit(array $form, FormStateInterface &$form_state) { $form_state->setValue('имя_фильтра', 'новое_значение'); }
Drupal 7
/** * Implements hook_form_FORM_ID_alter(): views_exposed_form. */ function MODULENAME_form_views_exposed_form_alter(&$form, &$form_state) { if ($form_state['view']->name == 'myview' && $form_state['view']->current_display == 'page') { array_unshift($form['#submit'], 'MODULENAME_form_views_exposed_form_submit'); } } /** * Custom submit callback for views exposed form. * @see views_exposed_form_submit() */ function MODULENAME_form_views_exposed_form_submit($form, &$form_state) { $form_state['values']['имя_фильтра'] = 'новое_значение'; }
Комментарии
А как подставить в поле (список элементов таксономии) раскрытого фильтра определенное значение из этого словаря как значение по-умолчанию? Я его получаю из SESSION, но не в этом суть.
Собственно, сам додумался:
А если подмену осуществлять с помощью hook_views_query_alter(), есть ли недостатки у такого подхода?
Оставить комментарий