Коллеги подскажите кто как делает зависимые поля в 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. Но модуль находится в альфе.
Подскажите может быть есть ещё какие-то стабильные решения?
Ответы
В итоге поставил модуль https://www.drupal.org/project/conditional_fields, он хоть и в альфе, но мои задачи решает, каких-либо ошибок и проблем при использовании пока не возникло. Думаю с новой версией движка модуль обязательно доработают
Возможно, это проще всего сделать через 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'];
}
не подскажете как проверить при этом значение поля field_category ?