我是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>
这种方法是否正常,或者我是否应该更改此方法以使我的自定义模块正常运行?
答案 0 :(得分:2)
你可以去:
admin/config/people/accounts/fields
并添加您需要的字段。
在字段集"User settings"
中,不要忘记检查"Display on user registration form."