为用户注册表单drupal 7中的用户名字段提供默认值

为用户注册表单drupal 7中的用户名字段提供默认值,drupal,drupal-7,drupal-modules,Drupal,Drupal 7,Drupal Modules,您好,我想通过上面的代码实现的目标是,我想从注册表中隐藏用户名字段,相反,我想在进入数据库之前,将名字和姓氏连接起来,以代码形式生成用户名 然而,问题是,用户注册表单的默认验证发生在我的任何代码之前。因此,我试图在默认验证user\u register\u表单之前调用自定义验证方法,以便将username字段的默认值设置为ABC Name 但现在当我提交表单时,它仍然向我显示用户名错误是必需的 我怎样才能解决这个问题。我必须通过代码而不是任何其他模块来完成此操作。好的,因此我通过将用户名字段的#

您好,我想通过上面的代码实现的目标是,我想从注册表中隐藏用户名字段,相反,我想在进入数据库之前,将名字和姓氏连接起来,以代码形式生成用户名

然而,问题是,用户注册表单的默认验证发生在我的任何代码之前。因此,我试图在默认验证user\u register\u表单之前调用自定义验证方法,以便将username字段的默认值设置为ABC Name

但现在当我提交表单时,它仍然向我显示用户名错误是必需的


我怎样才能解决这个问题。我必须通过代码而不是任何其他模块来完成此操作。

好的,因此我通过将用户名字段的#需要"验证属性设置为false来修复它

/**
 * Implements hook_form_alter()
 */
function voen_registration_form_alter(&$form, &$form_state, $form_id) {
  switch($form_id){
    case 'user_register_form':
      $form['account']['name']['#type'] = 'hidden';
      array_unshift($form['#validate'],'_voen_registration_custom_validate');  
      array_unshift($form['#submit'],'_voen_registration_generate_username');
      break;
  }     
}

function _voen_registration_generate_username(&$form, &$form_state){
  drupal_set_message('Function Running');
}

/**
 * Since the validation functions runs before submit
 * We are assigning value to the username field so that it passes 
 * the default validation function
 */
function _voen_registration_custom_validate(&$form, &$form_state){
  $form_state['values']['name'] = 'Abc Name';
}
$form['account']['name']['#needs_validation'] = false;