You are here

public function FormTestLabelForm::buildForm in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/system/tests/modules/form_test/src/Form/FormTestLabelForm.php \Drupal\form_test\Form\FormTestLabelForm::buildForm()

Form constructor.

Parameters

array $form: An associative array containing the structure of the form.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

Return value

array The form structure.

Overrides FormInterface::buildForm

File

core/modules/system/tests/modules/form_test/src/Form/FormTestLabelForm.php, line 59

Class

FormTestLabelForm
A form for testing form labels and required marks.

Namespace

Drupal\form_test\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
  $form['form_checkboxes_test'] = [
    '#type' => 'checkboxes',
    '#title' => t('Checkboxes test'),
    '#options' => [
      'first-checkbox' => t('First checkbox'),
      'second-checkbox' => t('Second checkbox'),
      'third-checkbox' => t('Third checkbox'),
      '0' => t('0'),
    ],
  ];
  $form['form_radios_test'] = [
    '#type' => 'radios',
    '#title' => t('Radios test'),
    '#options' => [
      'first-radio' => t('First radio'),
      'second-radio' => t('Second radio'),
      'third-radio' => t('Third radio'),
      '0' => t('0'),
    ],
    // Test #field_prefix and #field_suffix placement.
    '#field_prefix' => '<span id="form-test-radios-field-prefix">' . t('Radios #field_prefix element') . '</span>',
    '#field_suffix' => '<span id="form-test-radios-field-suffix">' . t('Radios #field_suffix element') . '</span>',
  ];
  $form['form_checkbox_test'] = [
    '#type' => 'checkbox',
    '#title' => t('Checkbox test'),
  ];
  $form['form_textfield_test_title_and_required'] = [
    '#type' => 'textfield',
    '#title' => t('Textfield test for required with title'),
    '#required' => TRUE,
  ];
  $form['form_textfield_test_no_title_required'] = [
    '#type' => 'textfield',
    // We use an empty title, since not setting #title suppresses the label
    // and required marker.
    '#title' => '',
    '#required' => TRUE,
  ];
  $form['form_textfield_test_title'] = [
    '#type' => 'textfield',
    '#title' => t('Textfield test for title only'),
    // Not required.
    // Test #prefix and #suffix placement.
    '#prefix' => '<div id="form-test-textfield-title-prefix">' . t('Textfield #prefix element') . '</div>',
    '#suffix' => '<div id="form-test-textfield-title-suffix">' . t('Textfield #suffix element') . '</div>',
  ];
  $form['form_textfield_test_title_after'] = [
    '#type' => 'textfield',
    '#title' => t('Textfield test for title after element'),
    '#title_display' => 'after',
  ];
  $form['form_textfield_test_title_invisible'] = [
    '#type' => 'textfield',
    '#title' => t('Textfield test for invisible title'),
    '#title_display' => 'invisible',
  ];

  // Textfield test for title set not to display.
  $form['form_textfield_test_title_no_show'] = [
    '#type' => 'textfield',
  ];

  // Checkboxes & radios with title as attribute.
  $form['form_checkboxes_title_attribute'] = [
    '#type' => 'checkboxes',
    '#title' => 'Checkboxes test',
    '#title_display' => 'attribute',
    '#options' => [
      'first-checkbox' => 'First checkbox',
      'second-checkbox' => 'Second checkbox',
    ],
    '#required' => TRUE,
  ];
  $form['form_radios_title_attribute'] = [
    '#type' => 'radios',
    '#title' => 'Radios test',
    '#title_display' => 'attribute',
    '#options' => [
      'first-radio' => 'First radio',
      'second-radio' => 'Second radio',
    ],
    '#required' => TRUE,
  ];
  $form['form_checkboxes_title_invisible'] = [
    '#type' => 'checkboxes',
    '#title' => 'Checkboxes test invisible',
    '#title_display' => 'invisible',
    '#options' => [
      'first-checkbox' => 'First checkbox',
      'second-checkbox' => 'Second checkbox',
    ],
    '#required' => TRUE,
  ];
  $form['form_radios_title_invisible'] = [
    '#type' => 'radios',
    '#title' => 'Radios test invisible',
    '#title_display' => 'invisible',
    '#options' => [
      'first-radio' => 'First radio',
      'second-radio' => 'Second radio',
    ],
    '#required' => TRUE,
  ];
  foreach (static::$typesWithTitle as $type) {
    $form['form_' . $type . '_title_no_xss'] = [
      '#type' => $type,
      '#title' => "{$type} <script>alert('XSS')</script> is XSS filtered!",
    ];

    // Add keys that are required for some elements to be processed correctly.
    if (in_array($type, [
      'checkboxes',
      'radios',
    ], TRUE)) {
      $form['form_' . $type . '_title_no_xss']['#options'] = [];
    }
    if ($type === 'datetime') {
      $form['form_' . $type . '_title_no_xss']['#default_value'] = NULL;
    }
  }
  return $form;
}