You are here

function views_dependent_filters_exposed_form_after_build in Views Dependent Filters 8

Same name and namespace in other branches
  1. 7 views_dependent_filters.module \views_dependent_filters_exposed_form_after_build()

After build form processor for the views exposed form.

1 string reference to 'views_dependent_filters_exposed_form_after_build'
ViewsDependentFilter::buildExposedForm in src/Plugin/views/filter/ViewsDependentFilter.php
Make our changes to the form but don't return anything ourselves.

File

./views_dependent_filter.module, line 15
views_dependent_filters.module Provides a Views exposed filter which makes other filters depend on values in yet further filters for their visiblity and processing. For example: if the 'node type' filter is set to 'article', show a…

Code

function views_dependent_filters_exposed_form_after_build(&$form, \Drupal\Core\Form\FormStateInterface $form_state) {

  // We may have multiple dependency info arrays from more than one copies
  // of the views_dependent_filters_handler_filter_dependent handler.
  foreach ($form_state->dependent_exposed_filters as $dependency_info) {
    $form_dependency = array();
    foreach ($dependency_info['controllers'] as $filter_id => $controller_values) {
      $identifier = $dependency_info['identifiers'][$filter_id];

      // Regular form.
      foreach ($controller_values as $controller_value) {
        $part = ":input[name= {$filter_id}]";
        $form_dependency[$part]['value'] = $controller_value;

        // Converting in array for multivalue fields
        $form_dependency_array[] = $form_dependency;
      }
    }

    // Set the dependency on each form element as required.
    foreach ($dependency_info['dependents'] as $dependent_filter_id) {
      $identifier = $dependency_info['identifiers'][$dependent_filter_id];
      $form[$identifier]['#states']['visible'] = $form_dependency_array;
    }
  }
  return $form;
}