Рейтинг:0

У меня не работает проверка радиовходов

флаг il

Я создаю форму с API форм drupal. Проверка хорошо работает для всех моих других полей. Но я тоже начал пробовать работать с радиокнопками. Неважно, если я нажму на опцию радио, проверка всегда возвращает «требуется цвет».

// Код метода сборки формы
$ форма ['дата рождения'] = [
  '#тип' => 'дата',
  '#title' => $this->t('Ваша дата рождения'),
  '#date_date_format' => 'д-м-Г',
];

$ форма ['color_select'] = [
  '#type' => 'радио',
  '#title' => $this->t('Выберите цвет'),
  '#варианты' => [
    'синий' => $this->t('Синий'),
    'белый' => $this->t('Белый'),
    'черный' => $this->t('Черный'),
    // 'другое' => $this->t('Другое'),
  ],
  '#атрибуты' => [
    'id' => 'color_select',
    'имя' => 'field_color_select',
  ],
  '#состояния' => [
    'включено' => [
      ':input[name="field_custom_color"]' => ['value' => ''],
    ],
  ],
];

// Код метода валидатора формы
если ($form_state->getValue('дата рождения') == '') {
  $form_state->setErrorByName('дата рождения', $this->t('Требуется дата рождения'));
}
если ($form_state->getValue('color_select') == '') {
  $form_state->setErrorByName('color_select', $this->t('Требуется цвет'));
}

Я думал, что getValue(name) и setErrorByname(name) должны быть такими же, как $form[name] =[]; чтобы заставить его работать, но для поля переключателей это не так.

флаг cn
Знакомы ли вы с модулем «Примеры»? В подмодуле form_api_example есть пример радио (и многих других частей Form API): https://www.drupal.org/project/examples.
Jorn Reed avatar
флаг il
@PatrickKenny нет, я этого не знал, ха-ха. Я взгляну!
Рейтинг:0
флаг il

Мне удалось заставить его работать следующим образом:

$ форма ['color_select'] = [
  '#type' => 'радио',
  '#title' => $this->t('Выберите цвет'),
  '#варианты' => [
    'синий' => $this->t('Синий'),
    'белый' => $this->t('Белый'),
    'черный' => $this->t('Черный'),
    // 'другое' => $this->t('Другое'),
  ],
  '#атрибуты' => [
    'id' => 'color_select',
    'имя' => 'color_select',
  ],
  '#состояния' => [
    'проверено' => [
      ':input[name="color_select"]' => [
        ['значение' => 'синий'],
        'или же',
        ['значение' => 'белый'],
        'или же',
        ['значение' => 'черный'],
      ],
    ],
  ],
];

Хотя я не уверен, как это работает сейчас. Действительно ли он устанавливает переключатель в положение «проверяется», когда значение является одним из заданных значений?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.