2015-06-14 5 views
1

Я пытаюсь добавить пользовательские поля в регистрационную форму пользователя. Мне нужно сохранить 2 из них в базу данных пользователя Drupal и 1 в мою отдельную базу данных.Drupal 7 пользовательская регистрация custom

Я использую hook_form_alter для добавления полей, а затем hook_form_submit для сохранения полей.

Как отправить поля имени/фамилии в таблицу пользователя drupal, а затем сохранить SSN в свой собственный? У меня есть функция для переключения между двумя базами данных, но я просто не уверен, как использовать hook_submit_form для сохранения некоторых в одной базе данных, а некоторые в другой?

function myModule_form_alter(&$form, &$form_state, $form_id){ 


if($form_id == 'user_registration_form'){ 
    $form['f_name'] = array(
     '#type' => 'textfield', 
     '#title' => t('First Name'), 
     '#required' => TRUE, 
     '#attributes' => array('class' => array('fname')) 
     ); 
    $form['l_name'] = array(
     '#type' => 'textfield', 
     'title' => t('Last Name'), 
     '#required' => TRUE, 
     '#attributes' => array('class' => array('lname')) 
     ); 
    $form['ssn'] = array(
     '#type' => 'textfield', 
     '#title' => t('Social Security Number') 
     '#maxlength' => 11, 
     '#required' => TRUE, 
     '#attributes' => array('class' => array('ssn'), 'placeholder' => '999-99-9999') 
     ); 

Будет ли это примерно так?

function myModule_form_submit($form, &$form_state){ 
    //Array of information to save into drupal user's table 
    $edit = array(
       'f_name' => $form_state['values']['f_name'], 
       'l_name' => $form_state['values']['l_name'], 
       'second_email' => $form_state['values']['second_email'], 
     ); 
    user_save(drupal_anonymous_user(), $edit); 

    drupal_set_message(t('The form has been submitted.')); 
} 

Я не уверен, если я могу использовать функцию Друпала user_save() и передать ему эту новую информацию, чтобы сохранить или, если я должен сделать что-то в .install файл, чтобы добавить эти новые столбцы, а затем нацелить их в форме_submit?

+0

использовать функции db_insert или db_query для вставки в новую базу данных. вы можете вызвать их после функции user_save в обработчике отправки –

+0

@ViswanathPolaki ahhh, что делает его намного более простым. Я все еще могу вызвать функцию user_save(), как я делаю, чтобы сохранить дополнительные поля, которые я добавляю в таблицу пользователя drupal правильно? – Exziled

+0

yes, user_save сохранит поля регистрации и остальные поля, которые вы можете сохранить вручную. –

ответ

0

В каком поле вы сохраните данные пользовательского поля? Вы должны создать пользовательскую таблицу для этих полей и сохранить данные там. Когда вы загружаете пользователя, вы также должны загружать эти данные из этой таблицы. Невозможно напрямую загрузить эти данные пользовательского поля при загрузке пользовательского объекта.

Смежные вопросы