You are here

class Checkboxes in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/lib/Drupal/Core/Render/Element/Checkboxes.php \Drupal\Core\Render\Element\Checkboxes

Provides a form element for a set of checkboxes.

Properties:

  • #options: An associative array whose keys are the values returned for each checkbox, and whose values are the labels next to each checkbox. The #options array cannot have a 0 key, as it would not be possible to discern checked and unchecked states.

Usage example:


$form['high_school']['tests_taken'] = array(
  '#type' => 'checkboxes',
  '#options' => array('SAT' => t('SAT'), 'ACT' => t('ACT'))),
  '#title' => t('What standardized tests did you take?'),
  ...
);

Plugin annotation

@FormElement("checkboxes");

Hierarchy

Expanded class hierarchy of Checkboxes

See also

\Drupal\Core\Render\Element\Radios

\Drupal\Core\Render\Element\Checkbox

4 string references to 'Checkboxes'
FormTestCheckboxesRadiosForm::buildForm in core/modules/system/tests/modules/form_test/src/Form/FormTestCheckboxesRadiosForm.php
Form constructor.
FormTestInputForgeryForm::buildForm in core/modules/system/tests/modules/form_test/src/Form/FormTestInputForgeryForm.php
Form constructor.
FormTestProgrammaticForm::buildForm in core/modules/system/tests/modules/form_test/src/Form/FormTestProgrammaticForm.php
Form constructor.
FormTestValidateRequiredForm::buildForm in core/modules/system/tests/modules/form_test/src/Form/FormTestValidateRequiredForm.php
Form constructor.
45 #type uses of Checkboxes
AccountForm::form in core/modules/user/src/AccountForm.php
Gets the actual form array to be built.
AdvancedSettingsForm::buildForm in core/modules/views_ui/src/Form/AdvancedSettingsForm.php
Form constructor.
Attachment::buildOptionsForm in core/modules/views/src/Plugin/views/display/Attachment.php
Provide the default form for setting options.
Block::buildOptionsForm in core/modules/views/src/Plugin/views/display/Block.php
Provide the default form for setting options.
BookSettingsForm::buildForm in core/modules/book/src/Form/BookSettingsForm.php
Form constructor.

... See full list

File

core/lib/Drupal/Core/Render/Element/Checkboxes.php, line 36
Contains \Drupal\Core\Render\Element\Checkboxes.

Namespace

Drupal\Core\Render\Element
View source
class Checkboxes extends FormElement {
  use CompositeFormElementTrait;

  /**
   * {@inheritdoc}
   */
  public function getInfo() {
    $class = get_class($this);
    return array(
      '#input' => TRUE,
      '#process' => array(
        array(
          $class,
          'processCheckboxes',
        ),
      ),
      '#pre_render' => array(
        array(
          $class,
          'preRenderCompositeFormElement',
        ),
      ),
      '#theme_wrappers' => array(
        'checkboxes',
      ),
    );
  }

  /**
   * Processes a checkboxes form element.
   */
  public static function processCheckboxes(&$element, FormStateInterface $form_state, &$complete_form) {
    $value = is_array($element['#value']) ? $element['#value'] : array();
    $element['#tree'] = TRUE;
    if (count($element['#options']) > 0) {
      if (!isset($element['#default_value']) || $element['#default_value'] == 0) {
        $element['#default_value'] = array();
      }
      $weight = 0;
      foreach ($element['#options'] as $key => $choice) {

        // Integer 0 is not a valid #return_value, so use '0' instead.
        // @see \Drupal\Core\Render\Element\Checkbox::valueCallback().
        // @todo For Drupal 8, cast all integer keys to strings for consistency
        //   with \Drupal\Core\Render\Element\Radios::processRadios().
        if ($key === 0) {
          $key = '0';
        }

        // Maintain order of options as defined in #options, in case the element
        // defines custom option sub-elements, but does not define all option
        // sub-elements.
        $weight += 0.001;
        $element += array(
          $key => array(),
        );
        $element[$key] += array(
          '#type' => 'checkbox',
          '#title' => $choice,
          '#return_value' => $key,
          '#default_value' => isset($value[$key]) ? $key : NULL,
          '#attributes' => $element['#attributes'],
          '#ajax' => isset($element['#ajax']) ? $element['#ajax'] : NULL,
          // Errors should only be shown on the parent checkboxes element.
          '#error_no_message' => TRUE,
          '#weight' => $weight,
        );
      }
    }
    return $element;
  }

  /**
   * {@inheritdoc}
   */
  public static function valueCallback(&$element, $input, FormStateInterface $form_state) {
    if ($input === FALSE) {
      $value = array();
      $element += array(
        '#default_value' => array(),
      );
      foreach ($element['#default_value'] as $key) {
        $value[$key] = $key;
      }
      return $value;
    }
    elseif (is_array($input)) {

      // Programmatic form submissions use NULL to indicate that a checkbox
      // should be unchecked. We therefore remove all NULL elements from the
      // array before constructing the return value, to simulate the behavior
      // of web browsers (which do not send unchecked checkboxes to the server
      // at all). This will not affect non-programmatic form submissions, since
      // all values in \Drupal::request()->request are strings.
      // @see \Drupal\Core\Form\FormBuilderInterface::submitForm()
      foreach ($input as $key => $value) {
        if (!isset($value)) {
          unset($input[$key]);
        }
      }
      return array_combine($input, $input);
    }
    else {
      return array();
    }
  }

}

Members

Namesort descending Modifiers Type Description Overrides
Checkboxes::getInfo public function Returns the element properties for this element. Overrides ElementInterface::getInfo
Checkboxes::processCheckboxes public static function Processes a checkboxes form element.
Checkboxes::valueCallback public static function Determines how user input is mapped to an element's #value property. Overrides FormElement::valueCallback
CompositeFormElementTrait::preRenderCompositeFormElement public static function Adds form element theming to an element if its title or description is set.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
FormElement::processAutocomplete public static function Adds autocomplete functionality to elements.
FormElement::processPattern public static function #process callback for #pattern form element property.
FormElement::validatePattern public static function #element_validate callback for #pattern form element property.
PluginBase::$configuration protected property Configuration information passed into the plugin. 2
PluginBase::$pluginDefinition protected property The plugin implementation definition.
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::__construct public function Constructs a Drupal\Component\Plugin\PluginBase object. 69
RenderElement::preRenderAjaxForm public static function Adds Ajax information about an element to communicate with JavaScript.
RenderElement::preRenderGroup public static function Adds members of this group as actual elements for rendering.
RenderElement::processAjaxForm public static function Form element processing handler for the #ajax form property.
RenderElement::processGroup public static function Arranges elements into groups.
RenderElement::setAttributes public static function Sets a form element's class attribute. Overrides ElementInterface::setAttributes
StringTranslationTrait::$stringTranslation protected property The string translation service.
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.