(РЕШЕНО) динамическое изменение формы в зависимости от состояния элемента

Главные вкладки

Аватар пользователя so-lo74 so-lo74 11 ноября 2012 в 0:43

Всем привет ).

Пытаюсь решить простую задачу, но результат довольно странный:
В форме редактирования ноды, необходимо динамически изменять содержимое элемента типа select в зависимости от
состояния выбранной радио-кнопки, т.е. в список выбора подгружается соответствующий набор данных.
Использование ajaх — принципиальный момент, т.к. форму перезагружать не хотелось бы.

<?php
/**
 * Implements hook_form_FORM_ID_alter().
 */
function UI_custom_form_task_node_form_alter(&$form, &$form_state) {
  
//  Требуется модифицикация поля field_user (тот самый список)
  //  блок кнопок выбора типа списка

  

$form['users'] = array(
    
'#type' => 'radios',
    
'#title' => 'Состав исполнителей'
    
'#options' => array(
      
'group' => 'Группа',
      
'all' => 'Все',
    ),    
    
'#default_value' => 'group',        
    
'#required' => true,
    
'#ajax' => array(
      
'callback' => 'UI_custom_users_list',
      
'event' => 'click',       
    ),    
  );  

/* 
 .... начинка формы, к делу не относится
*/

  

return $form;
}

/* 
 * заполнение списка в зависимости от нажатой кнопки 
*/
function UI_custom_users_list(&$form, &$form_state) {
  
debug('call UI_custom_users_list');

  

//  заполнение требуемого поля
  
$usr=&$form['field_user']['und']['#options'];
  
$usr=array();

  

//  чем собственно и заполняем — на выходе функции массив 
  
$usr=taxonomy_by_role_load_group('voc_by_role_5'197);    //    тест для dh, uid=197  

  

$form_state['rebuild'] = TRUE;  
}  
?>

Проблема в том, что и ajax вроде бы отрабатывает, но вот вызывается ли функция заполнения поля списка UI_custom_users_list — не ясно.
Вызов debug не отображается и как понять вообще, выполняется ли операция, передаются ли данные в поле?
Пробовал разные варианты событий (click, mousedown etc). Возможно есть другой путь решения.

Был еще вариант использовать авто-submit формы с помощью ctools_add_js('auto-submit'), но это стрельба из пушки по воробьям, ибо форму отправлять на этом шаге (выбор содержимого поля) не требуется.

Подскажите, пожалуйста, как заставить работать эту конструкцию? )

Комментарии

Аватар пользователя so-lo74 so-lo74 11 ноября 2012 в 14:36

boatsman — Еще раз спасибо, помогло ). Налицо было непонимание основных принципов.

roman-yrv — Благодарю ), Вы правы — очень хороший блог, читаю его
чуть ли не самого начала знакомства с drupal (а оно недавнее Wink