$this->t('Color'), '#type' => 'select', '#options' => [ 'red' => 'red', 'green' => 'green', 'blue' => 'blue', ], '#ajax' => [ 'callback' => [$object, 'selectCallback'], ], '#suffix' => '
No color yet selected
', ]; $form['checkbox'] = [ '#type' => 'checkbox', '#title' => $this->t('Test checkbox'), '#ajax' => [ 'callback' => [$object, 'checkboxCallback'], ], '#suffix' => '
No action yet
', ]; $form['submit'] = [ '#type' => 'submit', '#value' => $this->t('submit'), ]; // This is for testing invalid callbacks that should return a 500 error in // \Drupal\Core\Form\FormAjaxResponseBuilderInterface::buildResponse(). $invalid_callbacks = [ 'null' => NULL, 'empty' => '', 'nonexistent' => 'some_function_that_does_not_exist', ]; foreach ($invalid_callbacks as $key => $value) { $form['select_' . $key . '_callback'] = [ '#type' => 'select', '#title' => $this->t('Test %key callbacks', ['%key' => $key]), '#options' => ['red' => 'red'], '#ajax' => ['callback' => $value], ]; } $form['test_group'] = [ '#type' => 'details', '#title' => $this->t('Test group'), '#open' => TRUE, ]; // Test ajax element in a #group. $form['checkbox_in_group_wrapper'] = [ '#type' => 'container', '#attributes' => ['id' => 'checkbox-wrapper'], '#group' => 'test_group', 'checkbox_in_group' => [ '#type' => 'checkbox', '#title' => $this->t('AJAX checkbox in a group'), '#ajax' => [ 'callback' => [$object, 'checkboxGroupCallback'], 'wrapper' => 'checkbox-wrapper', ], ], 'nested_group' => [ '#type' => 'details', '#title' => $this->t('Nested group'), '#open' => TRUE, ], 'checkbox_in_nested' => [ '#type' => 'checkbox', '#group' => 'nested_group', '#title' => $this->t('AJAX checkbox in a nested group'), '#ajax' => [ 'callback' => [$object, 'checkboxGroupCallback'], 'wrapper' => 'checkbox-wrapper', ], ], ]; $form['another_checkbox_in_nested'] = [ '#type' => 'checkbox', '#group' => 'nested_group', '#title' => $this->t('Another AJAX checkbox in a nested group'), ]; return $form; } /** * {@inheritdoc} */ public function submitForm(array &$form, FormStateInterface $form_state) { } }