Drupal Form API - значение текстового поля по умолчанию (из поиска LDAP/CAS)
Я создаю форму с использованием API форм Drupal 7... пока что все было кошерно; но похоже, что я врезался в стену. Ищите указание / указывайте в правильном направлении:
Пользователь входит в систему, используя CAS (Central Authentication Service). Клики по форме для создания новой записи.
В верхней части формы у меня есть флажок (который установлен по умолчанию), за которым следуют три поля: ID, Имя, Телефон и Электронная почта.
Я предварительно заполняю эти поля, используя следующий код:
<?php
//... other code prior to this function
function user_form_form_start($form, &$form_state) {
global $user;
$result = db_query('select u.name, dn.field_full_name_value, pn.field_phone_value, u.mail from field_data_field_full_name dn join field_data_field_phone pn on (dn.entity_id = pn.entity_id) join users u on (pn.entity_id = u.uid) where u.uid = :uid', array(':uid' => $user->uid))->fetchAll();
$myID = isset($result[0]->name) ? $result[0]->name : "";
$myFullName = isset($result[0]->field_full_name_value) ? $result[0]->field_full_name_value : "";
$myPhoneNumber = isset($result[0]->field_phone_value) ? substr($result[0]->field_phone_value, 2) : "";
$myEmailAddress = isset($result[0]->mail) ? $result[0]->mail : "";
$form['tab_user'] = array(
'#type' => 'fieldset',
'#title' => t('User Details'),
'#collapsible' => TRUE, // Added
'#collapsed' => FALSE, // Added
);
$form['tab_user']['user_sameAsAuthor'] = array(
'#type' => 'checkbox',
'#title' => t('Filling it out for myself'),
'#default_value' => isset($form_state['object']->user_sameAsAuthor) ? $form_state['object']->user_sameAsAuthor : TRUE,
// '#required' => TRUE,
);
$form['tab_user'] ['user_id'] = array(
'#type' => 'textfield',
'#title' => t('My CAS ID'),
'#default_value' => isset($form_state['object']->user_id) ? $form_state['object']->user_id : $myID,
// '#required' => TRUE,
);
$form['tab_user']['user_name'] = array(
'#type' => 'textfield',
'#title' => t('Name'),
'#default_value' => isset($form_state['object']->user_name) ? $form_state['object']->user_name : $myFullName,
// '#required' => TRUE,
);
$form['tab_user']['user_phone'] = array(
'#type' => 'textfield',
'#title' => t('Phone Number'),
'#default_value' => isset($form_state['object']->user_phone) ? $form_state['object']->user_phone : $myPhoneNumber,
'#attributes' => array('class' => array('phoneNumberField')),
'#size' => 20,
// '#required' => TRUE,
);
$form['tab_user']['user_email'] = array(
'#type' => 'textfield',
'#title' => t('E-mail'),
'#default_value' => isset($form_state['object']->user_email) ? $form_state['object']->user_email : $myEmailAddress,
// '#required' => TRUE,
);
return $form;
}
//... other code after this function
?>
ВСЕ вышеперечисленное прекрасно работает! Вот где я застрял:
Если пользователь снимает флажок, я хотел бы, чтобы пользователь ввел новый идентификатор. На основании каких-либо идентификаторов, введенных пользователем, как я могу "ajaxical" получить имя, телефон и электронную почту, выполняя поиск LDAP?
Любая помощь очень ценится!
РЕДАКТИРОВАТЬ:
Извиняюсь! Забыл упомянуть, что в своем исследовании я копался в Form API (конечно) и заметил, что textfield
( https://api.drupal.org/api/drupal/developer%21topics%21forms_api_reference.html/7.x#textfield) принимает ajax
свойство ( https://api.drupal.org/api/drupal/developer%21topics%21forms_api_reference.html/7.x#ajax). Однако пример кода не полностью отвечает на мой вопрос.