it-swarm.com.de

#Zustände sichtbar

Die sichtbaren Zustände scheinen in D7 korrekt zu funktionieren. In D8 möchte ich testen, ob ein Feld sichtbar ist, wenn eines OR ein anderes Feld einen Wert hat. Und auch wenn zwei Felder einen Wert haben. Was ich unten habe, funktioniert, wenn beide Felder einen Wert haben.

use Drupal\Core\Form\FormStateInterface;
use \Drupal\Core\State\StateInterface;

function mymodule_form_alter(&$form, FormStateInterface     &$form_state, $form_id) {
  if ($form_id == 'node_page_form') {
    $form['field_format']['#states'] = array(
      'visible' => array(
          ':input[name="field_item_type"]' => array('value' => 'tv_show'),
          'or',
          ':input[name="field_extra"]' => array('value' => 'bike'),
      ),
    );
  }
}
3
paulcap1

Versuchen Sie den folgenden Code. Es funktioniert.

$form['field_item_type'] = [
  '#type' => 'select',
  '#title' => $this->t('Title'),
  '#description' => $this->t('Title must be at least 5 characters in length.'),
  '#options' => ['tv_show'=> 'Tv show','serials' => 'Serials']
];
$form['field_extra'] = [
  '#type' => 'select',
  '#title' => $this->t('Title'),
  '#description' => $this->t('Title must be at least 5 characters in length.'),
  '#options' => ['movie' => 'movie','chair'=>'Chair'],
];
$form['field_format'] = [
  '#type' => 'textfield',
  '#title' => $this->t('Title'),
  '#description' => $this->t('Title must be at least 5 characters in length.'),
  '#required' => TRUE,
];
$form['field_format']['#states'] = [
  'visible' => [
    [
      [':input[name="field_item_type"]' => ['value' => 'tv_show']],
      'or',
      [':input[name="field_extra"]' => ['value' => 'movie']],
    ],
  ],
];
10
Shreya Shetty