public static Tableselect::processTableselect(&$element, FormStateInterface $form_state, &$complete_form)
Creates checkbox or radio elements to populate a tableselect table.
Parameters
array $element: An associative array containing the properties and children of the tableselect element.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
array $complete_form: The complete form structure.
Return value
array The processed element.
File
- core/lib/Drupal/Core/Render/Element/Tableselect.php, line 219
Class
- Tableselect
- Provides a form element for a table with radios or checkboxes in left column.
Namespace
Drupal\Core\Render\Element
Code
public static function processTableselect(&$element, FormStateInterface $form_state, &$complete_form) { if ($element['#multiple']) { $value = is_array($element['#value']) ? $element['#value'] : array(); } else { // Advanced selection behavior makes no sense for radios. $element['#js_select'] = FALSE; } $element['#tree'] = TRUE; if (count($element['#options']) > 0) { if (!isset($element['#default_value']) || $element['#default_value'] === 0) { $element['#default_value'] = array(); } // Create a checkbox or radio for each item in #options in such a way that // the value of the tableselect element behaves as if it had been of type // checkboxes or radios. foreach ($element['#options'] as $key => $choice) { // Do not overwrite manually created children. if (!isset($element[$key])) { if ($element['#multiple']) { $title = ''; if (isset($element['#options'][$key]['title']) && is_array($element['#options'][$key]['title'])) { if (!empty($element['#options'][$key]['title']['data']['#title'])) { $title = new TranslatableMarkup('Update @title', array( '@title' => $element['#options'][$key]['title']['data']['#title'], )); } } $element[$key] = array( '#type' => 'checkbox', '#title' => $title, '#title_display' => 'invisible', '#return_value' => $key, '#default_value' => isset($value[$key]) ? $key : NULL, '#attributes' => $element['#attributes'], '#ajax' => isset($element['#ajax']) ? $element['#ajax'] : NULL, ); } else { // 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' => '', '#return_value' => $key, '#default_value' => ($element['#default_value'] == $key) ? $key : NULL, '#attributes' => $element['#attributes'], '#parents' => $element['#parents'], '#id' => HtmlUtility::getUniqueId('edit-' . implode('-', $parents_for_id)), '#ajax' => isset($element['#ajax']) ? $element['#ajax'] : NULL, ); } if (isset($element['#options'][$key]['#weight'])) { $element[$key]['#weight'] = $element['#options'][$key]['#weight']; } } } } else { $element['#value'] = array(); } return $element; }
Please login to continue.