Drupal 7自定义用户注册表单

时间:2015-03-30 17:40:41

标签: php drupal-7

我是drupal的新手。

我需要通过添加id,mobile等字段来自定义注册表单。

我可以通过创建自定义模块来实现这一目标吗?

如果是,有人可以帮我提一下创建和覆盖默认用户注册提交功能的简要说明。我必须将这些细节插入另一个表,并且还必须将数据作为服务请求传递。

我创建了一个带功能的自定义模块

module_form_alter(&$form,&$form_state,$form_id){
$form['#submit'] = 'module_form_submit';

if($form_id == 'user_register_form'){ 
        //print_r($form_id);
        $form['email'] = array(
                '#type' => 'textfield',
              '#title' => t('id'),
              '#default_value' => '',
              '#size' => 60,
              '#maxlength' => 15,
              '#required' => TRUE,
         );
    }
}

function module_form_submit($form, &$form_state){
  echo "test";
 exit();
}

正在调用module_form_alter,我可以在注册屏幕上看到新字段,但仍未调用提交功能。我需要覆盖默认的drupal寄存器提交。

我的主题template.php

中已经有以下功能
function templatename_theme() {
  $items = array();

  $items['user_login'] = array(
    'render element' => 'form',
    'path' => drupal_get_path('theme', 'portal') . '/templates',
    'template' => 'user-login',
    'preprocess functions' => array(
       'portal_preprocess_user_login'
    ),
  );
  $items['user_register_form'] = array(
    'render element' => 'form',
    'path' => drupal_get_path('theme', 'portal') . '/templates',
    'template' => 'user-register-form',
    'preprocess functions' => array(
      'portal_preprocess_user_register_form'
    ),
  );
  $items['user_pass'] = array(
    'render element' => 'form',
    'path' => drupal_get_path('theme', 'portal') . '/templates',
    'template' => 'user-pass',
    'preprocess functions' => array(
      'portal_preprocess_user_pass'
    ),
  );

  return $items;
}

用户寄存器form.tpl.php

    <div class="form-group">
        <?php print drupal_render_children($form); ?>
    </div>

和页面 - 用户 - register.tpl.php与html

<div id="login-page">
        <div class="container">     
                 <div class="form-login" >
                <h2 class="form-login-heading"><a href="<?php echo $home; ?>"><img src="<?php echo drupal_get_path('theme', 'portal') . '/images/logo.png'; ?>"  width="100"></a><?php echo $createaccount; ?></h2>
                <div class="login-wrap">
                <?php  
                $elements = drupal_get_form("user_register_form"); 
                $form = drupal_render($elements);
                echo  $form ?>

         <?php if ($messages):?>
            <div id="messages-console" class="clearfix">
                <div class="grid_12">
                    <div class="mt-grid-fix">
                    <?php print $messages; ?>
                    </div>
                </div>
            </div>
            <?php endif; ?>



            </div>
                    </div>

    </div>
  </div>

这种方法是否正常,或者我是否应该更改此方法以使我的自定义模块正常运行?

1 个答案:

答案 0 :(得分:2)

你可以去:

admin/config/people/accounts/fields

并添加您需要的字段。

在字段集"User settings"中,不要忘记检查"Display on user registration form."

enter image description here