Добрый день!
Столкнулся с проблемой небольшой кастомизации формы добавления материалов.
В частности, например, хочу сделать чтобы при активном чекбоксе появлялся виджет поля для ввода номера телефона.
Использую следующий код:
<?php
function site_form_node_place_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
$form['check'] = array(
'#type' => 'checkbox',
'#title' => 'Указать номер телефона',
);
$form['field_phone'] = array(
'#states' => array(
'visible' => array(
':input[name="check"]' => array(
'checked' => TRUE,
),
),
),
);
}
?>
При этом поле ввода телефона скрывается, но при щелчке по чекбоксу не отображается.
drush ws показывает:
Notice: Undefined index: #type в drupal_process_states()
При использовании кастомного поля, например:
<?php $form['check'] = array(
'#type' => 'checkbox',
'#title' => 'Указать номер телефона',
);
$form['55555'] = array(
'#type' => 'textfield',
'#states' => array(
'visible' => array(
':input[name="check"]' => array(
'checked' => TRUE,
),
),
),
);?>
#states работает как положено!
Подскажите пожалуйста как решить проблему?
Заранее благодарю!
Комментарии
<?php
$form['field_phone']['#states'] = ...
?>
Вы перезаписываете $form['field_phone'], а не добавляете #states в него.
Спасибо, так работает!