Kozack
@Kozack
Thinking about a11y

Как сделать обязательное поле в форме Drupal?

В друпале есть вот такая конструкция
$form['type_delivery'] = array(
    '#type' => 'radios',
    '#options' => array('courier' => t('Courier'), 'other' => t('Other')),
    '#title' => t('Delivery type'),
    '#default_value' => 'courier',
  );
  $form['type_delivery_other'] = array(
    '#type' => 'textfield',
    '#title' => t('Other delivery type'),
    '#required' => true,
    '#states' => array(
      'visible' => array(
        'input[name="type_delivery"]' => array('value' =>'other'),
      ),
    ),
  );


Поле type_delivery_other появляется только когда поле type_delivery имеет значение other

Вопрос: Как сделать по аналогии зависимость параметра #required? Т.е. если поле type_delivery имеет значение other то поле type_delivery_other обязательное, а если type_delivery имеет другое значение то type_delivery_other НЕ обязательное.

Добавлено 30.09
Как оказалось в параметре states есть нужное мне свойство.
Решил задачу так:

$form['type_delivery'] = array(
    '#type' => 'radios',
    '#options' => array('courier' => t('Courier'), 'other' => t('Other')),
    '#title' => t('Delivery type'),
    '#default_value' => 'courier',
  );
  $form['type_delivery_other'] = array(
    '#type' => 'textfield',
    '#title' => t('Other delivery type'),
    '#required' => true,
    '#states' => array(
      'visible' => array(
        'input[name="type_delivery"]' => array('value' =>'other'),
      ),
      'required' => array(
         'input[name="type_delivery"]' => array('value' =>'other'),
      ),
    ),
  );
  • Вопрос задан
  • 2679 просмотров
Пригласить эксперта
Ответы на вопрос 2
andead
@andead
друпал девелопер, фрилансер
навесьте свой валидатор поля с помощью #element_validate
https://api.drupal.org/api/drupal/developer!topics...
Ответ написан
Комментировать
@mr_ko
Javascript, Node.js. React.js, Vue.js, Wordpress
Можно повесить ajax обработчик поля type_delivery. Подобные примеры есть в гугле
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
26 апр. 2024, в 07:20
2000 руб./за проект
26 апр. 2024, в 06:46
1000 руб./в час
26 апр. 2024, в 05:31
1000 руб./за проект