Вы здесь

Зависимые поля в Drupal 8: есть ли стабильное решение?

0

Коллеги подскажите кто как делает зависимые поля в Drupal 8? Есть задача сделать тип сотрудника, в зависимости от которого будут показаны те или иные поля при добавлении материала (с возможность делать их обязательными).

Почитал официальное руководство, есть два способа:
1) Через модуль Business Rules: https://www.drupal.org/docs/8/modules/business-rules/advanced-usage/depe.... Не очень удобный способ, состоящий из множества условий, среди которых - тип полей, который мне не подходит
2) Модуль: https://www.drupal.org/project/conditional_fields. Но модуль находится в альфе.

Подскажите может быть есть ещё какие-то стабильные решения?

Версия Drupal: 
8.x
Категория: 
Field API
Вопрос задан 20.03.2020 - 15:47

Ответы

0

В итоге поставил модуль https://www.drupal.org/project/conditional_fields, он хоть и в альфе, но мои задачи решает, каких-либо ошибок и проблем при использовании пока не возникло. Думаю с новой версией движка модуль обязательно доработают

Ответ дан 04.06.2020 - 08:15
2

Возможно, это проще всего сделать через hook_form_alter. Логика будет такая: добавляется ajax на определённое поле и при выборе значения из этого поля - скрывается/показывается другое поле.

Пример как при выборе значения из поля с категорией делать активным поле с проблемой:

function custom_module_form_alter(
  &$form,
  \Drupal\Core\Form\FormStateInterface $form_state,
  $form_id
) {
  $form['field_category']['widget']['#ajax'] = [
    'callback' => '_category_change',
    'wrapper' => 'field-problem-wrapper',
    'event' => 'change',
  ];

  $form['field_problem']['widget']['#prefix'] = '<div id="field-problem-wrapper">';
  $form['field_problem']['widget']['#suffix'] = '</div>';

  $form['status']['widget']['value']['#default_value'] = FALSE;
  if (!$form_state->getTriggeringElement()) {
    $form['field_problem']['widget']['#disabled'] = TRUE;
  }
}

function _category_change(
  $form,
  \Drupal\Core\Form\FormStateInterface &$form_state
) {
  return $form['field_problem']['widget'];
}
Ответ дан 24.03.2020 - 13:02
Аватар пользователя shu
shu
178

не подскажете как проверить при этом значение поля field_category ?

Комментарий оставлен 31.03.2020 - 14:47