You are here

public static function ArgumentPluginBase::processContainerRadios in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/modules/views/src/Plugin/views/argument/ArgumentPluginBase.php \Drupal\views\Plugin\views\argument\ArgumentPluginBase::processContainerRadios()

Custom form radios process function.

Roll out a single radios element to a list of radios, using the options array as index. While doing that, create a container element underneath each option, which contains the settings related to that option.

See also

\Drupal\Core\Render\Element\Radios::processRadios()

File

core/modules/views/src/Plugin/views/argument/ArgumentPluginBase.php, line 1147
Contains \Drupal\views\Plugin\views\argument\ArgumentPluginBase.

Class

ArgumentPluginBase
Base class for argument (contextual filter) handler plugins.

Namespace

Drupal\views\Plugin\views\argument

Code

public static function processContainerRadios($element) {
  if (count($element['#options']) > 0) {
    foreach ($element['#options'] as $key => $choice) {
      $element += array(
        $key => array(),
      );

      // Generate the parents as the autogenerator does, so we will have a
      // unique id for each radio button.
      $parents_for_id = array_merge($element['#parents'], array(
        $key,
      ));
      $element[$key] += array(
        '#type' => 'radio',
        '#title' => $choice,
        // The key is sanitized in drupal_attributes() during output from the
        // theme function.
        '#return_value' => $key,
        '#default_value' => isset($element['#default_value']) ? $element['#default_value'] : NULL,
        '#attributes' => $element['#attributes'],
        '#parents' => $element['#parents'],
        '#id' => Html::getUniqueId('edit-' . implode('-', $parents_for_id)),
        '#ajax' => isset($element['#ajax']) ? $element['#ajax'] : NULL,
      );
      $element[$key . '_options'] = array(
        '#type' => 'container',
        '#attributes' => array(
          'class' => array(
            'views-admin-dependent',
          ),
        ),
      );
    }
  }
  return $element;
}