function StateDemo::buildForm
Same name in other branches
- 3.x modules/form_api_example/src/Form/StateDemo.php \Drupal\form_api_example\Form\StateDemo::buildForm()
Build the simple form.
@inheritdoc
Overrides FormInterface::buildForm
File
-
modules/
form_api_example/ src/ Form/ StateDemo.php, line 29
Class
- StateDemo
- Implements the state demo form controller.
Namespace
Drupal\form_api_example\FormCode
public function buildForm(array $form, FormStateInterface $form_state) {
$form['description'] = [
'#type' => 'item',
'#markup' => $this->t('This example demonstrates the #states property. #states makes an element visibility dependent on another.'),
];
$form['needs_accommodation'] = [
'#type' => 'checkbox',
'#title' => 'Need Special Accommodations?',
];
// The #states property used here binds the visibility of the
// container element to the value of the needs_accommodation checkbox above.
$form['accommodation'] = [
'#type' => 'container',
'#attributes' => [
'class' => 'accommodation',
],
// #states is an associative array. Each key is the name of a state to
// apply to the element, such as 'visible'. Each value is another array,
// making a list of conditions that denote when the state should be
// applied. Every condition is a key/value pair, whose key is a jQuery
// selector that denotes another element on the page, and whose value is
// an array of conditions, which must be met on in order for the state to
// be applied.
//
// For additional documentation on the #states property including a list
// of valid states and conditions see drupal_process_states().
'#states' => [
// The state being affected is "invisible".
'invisible' => [
// Drupal will only apply this state when the element that satisfies
// the selector input[name="needs_accommodation"] is un-checked.
':input[name="needs_accommodation"]' => [
'checked' => FALSE,
],
],
],
];
$form['accommodation']['diet'] = [
'#type' => 'textfield',
'#title' => $this->t('Dietary Restrictions'),
];
// Add a submit button that handles the submission of the form.
$form['actions']['submit'] = [
'#type' => 'submit',
'#value' => $this->t('Submit'),
];
return $form;
}