I've tried to login by email address. So i've to remove username field from user_register_form and use value of mail field into value of name field by adding custom form validation in hook_form_alter(). But i couldn't make this work as i except. I'm getting error message "You must enter a username." Is any help from your side?

This is my code:

function test_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == "user_register_form") {
    $form['account']['name']['#access'] = FALSE;
    $form['account']['name']['#required'] = FALSE;
    $form['actions']['submit']['#value'] = t('Register');
    $form['actions']['submit']['#attributes'] = array('class' => array('btn-success'));
    $form['#validate'][] = 'test_user_register_validate';

function test_user_register_validate($form, &$form_state) {
  $form_state['values']['name'] = isset($form_state['values']['mail']) ? $form_state['values']['mail'] : '' ;

Answer: I got the solutions by just adding below code instead of '$form['#validate'][] = 'test_user_register_validate';'

array_unshift($form['#validate'], 'arep_user_register_validate');
  • 1
    Why don't you use Email Registration module? drupal.org/project/email_registration – ya.teck Sep 7 '15 at 13:16
  • Yes this is optimal solution. But i want to try without any contrib modules. – Guru Sep 7 '15 at 13:19
  • you should use contrib instead of redoing it :) – Essam Al-Qaie Sep 7 '15 at 15:02
  • I've done this using above codes. So not necessary to use contrib modules – Guru Sep 8 '15 at 12:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.