如何在drupal 7中注册时不需要用户发送电子邮件(可选)?
答案 0 :(得分:2)
我能够制作自定义模块。它与sharedemail非常相似。
<?php
function noemail_form_user_register_form_alter(&$form, &$form_state, $form_id) {
noemail_form_user_account_form_alter($form, $form_state, $form_id);
}
function noemail_form_user_profile_form_alter(&$form, &$form_state, $form_id) {
noemail_form_user_account_form_alter($form, $form_state, $form_id);
}
function noemail_form_user_account_form_alter(&$form, &$form_state, $form_id) {
if (is_array($form['#validate'])) {
$key = array_search( 'user_account_form_validate', $form['#validate'], TRUE );
if ( $key !== FALSE ) {
$form['#validate'][$key] = 'noemail_account_form_validate';
}
}
$form['account']['mail']['#required'] = FALSE;
}
function noemail_account_form_validate($form, &$form_state) {
$form['account']['mail']['#needs_validation'] = false;
}
以及安装文件以防万一
<?php
function sharedemail_install() {
db_query("UPDATE {system} SET weight = -99 WHERE name = 'noemail'");
}
希望这会有所帮助,哇,这是一个非常古老的主题。哦,注意这是d7
答案 1 :(得分:1)
你无法真正改变另一个验证钩子。
您可以尝试做的是构建自己的验证,并在该表单的验证(['#validate'])数组中仅实例化您自己的验证挂钩。
答案 2 :(得分:1)
有一个可选的邮件模块,可以在用户注册时使电子邮件字段成为可选项。访问https://www.drupal.org/project/optional_mail, 我希望它有所帮助。
答案 3 :(得分:0)
您可以使用#required setting实施的自定义模块中的Form API覆盖字段上的hook_form_alter。