You are here

public function AjaxFormsTestSimpleForm::buildForm in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/modules/system/tests/modules/ajax_forms_test/src/Form/AjaxFormsTestSimpleForm.php \Drupal\ajax_forms_test\Form\AjaxFormsTestSimpleForm::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/ajax_forms_test/src/Form/AjaxFormsTestSimpleForm.php, line 29
Contains \Drupal\ajax_forms_test\Form\AjaxFormsTestSimpleForm.

Class

AjaxFormsTestSimpleForm
Form builder: Builds a form that triggers a simple AJAX callback.

Namespace

Drupal\ajax_forms_test\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
  $object = new Callbacks();
  $form = array();
  $form['select'] = array(
    '#title' => $this
      ->t('Color'),
    '#type' => 'select',
    '#options' => array(
      'red' => 'red',
      'green' => 'green',
      'blue' => 'blue',
    ),
    '#ajax' => array(
      'callback' => array(
        $object,
        'selectCallback',
      ),
    ),
    '#suffix' => '<div id="ajax_selected_color">No color yet selected</div>',
  );
  $form['checkbox'] = array(
    '#type' => 'checkbox',
    '#title' => $this
      ->t('Test checkbox'),
    '#ajax' => array(
      'callback' => array(
        $object,
        'checkboxCallback',
      ),
    ),
    '#suffix' => '<div id="ajax_checkbox_value">No action yet</div>',
  );
  $form['submit'] = array(
    '#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 = array(
    'null' => NULL,
    'empty' => '',
    'nonexistent' => 'some_function_that_does_not_exist',
  );
  foreach ($invalid_callbacks as $key => $value) {
    $form['select_' . $key . '_callback'] = array(
      '#type' => 'select',
      '#title' => $this
        ->t('Test %key callbacks', array(
        '%key' => $key,
      )),
      '#options' => array(
        'red' => 'red',
      ),
      '#ajax' => array(
        'callback' => $value,
      ),
    );
  }
  return $form;
}