A veces el código habla por si mismo.
$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' => 'select',
'#title' => 'Need Special Accommodations?',
'#options' => [
'1' => 'si',
'2' => 'no',
'3' => 'vete a saber'
],
'#multiple' => TRUE,
];
// 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".
'visible' => [
// Drupal will only apply this state when the element that satisfies
// the selector input[name="needs_accommodation"] is un-checked.
'select[name="needs_accommodation[]"]' => ['value' => ['3']],
],
],
];
$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;
Los kudos para Penyaskito