我在標準「創建帳戶」頁面中添加了一些額外字段;特別是'確認電子郵件'字段。Drupal 7 - 確認電子郵件地址
如何勾入驗證,以便我可以添加自己的一些自定義驗證規則(例如,檢查兩個電子郵件匹配)?
我發現hook_user_presave,但我對我應該如何代碼它或者把它不確定。
任何和所有的幫助表示讚賞。
我在標準「創建帳戶」頁面中添加了一些額外字段;特別是'確認電子郵件'字段。Drupal 7 - 確認電子郵件地址
如何勾入驗證,以便我可以添加自己的一些自定義驗證規則(例如,檢查兩個電子郵件匹配)?
我發現hook_user_presave,但我對我應該如何代碼它或者把它不確定。
任何和所有的幫助表示讚賞。
我會建議安裝LoginToboggan module,它實際上具有開箱即用的準確功能選項,並且還有其他一些有用的選項。
如果你想自己做,雖然你可能會被關閉實施hook_form_FORM_ID_alter()
和直接添加驗證功能的registration form更好:
function mymodule_form_user_register_form_alter(&$form, &$form_state, $form_id) {
$form['#validate'][] = 'mymodule_user_register_form_validate';
}
function mymodule_user_register_form_validate(&$form, &$form_state) {
if ($form_state['values']['first_email'] != $form_state['values']['second_email']) {
form_set_error('second_email', 'The email addresses much match.');
}
}
確保您清除Drupal的緩存,一旦你已經實現了形成alter函數,以便Drupal正確註冊它。
希望有所幫助。
下面是Drupal 7的示例解決方案:
/**
* Implements hook_menu().
* Note: You can define your own menu callback optionally.
*/
function foo_menu() {
$items['foo-signup'] = array(
'title' => 'Create new account',
'page callback' => 'drupal_get_form',
'page arguments' => array('user_register_form'),
'access callback' => 'user_register_access',
'type' => MENU_CALLBACK,
);
return $items;
}
/**
* Implements hook_form_FORM_ID_alter().
*/
function foo_form_user_register_form_alter(&$form, &$form_state, $form_id) {
$form['account']['mail_confirm'] = array(
'#type' => 'textfield',
'#title' => t('Confirm e-mail address'),
'#maxlength' => EMAIL_MAX_LENGTH,
'#description' => t('Please confirm your e-mail address.'),
'#required' => TRUE,
);
$form['#validate'][] = 'foo_user_register_form_validate';
}
/**
* Implements validation callback.
*/
function foo_user_register_form_validate(&$form, &$form_state) {
if ($form_state['values']['mail'] != $form_state['values']['mail_confirm']) {
form_set_error('mail_confirm', 'The email addresses must match.');
}
}
嗨,這對我的註冊頁面非常有用,但確認字段正在密碼字段下面顯示...按以下順序:[email] [密碼] [密碼確認] [電子郵件確認]。如何重新對這些進行排序,以便[email confirm]字段直接位於[email]字段之後? – hockey2112 2017-05-25 20:18:30
@ hockey2112您可以嘗試添加具有某些值的'#weight'屬性。 – kenorb 2017-05-25 20:38:31
添加weight屬性確實會影響它,但權重爲「-1」會將確認字段放在「電子郵件地址」和「密碼」字段的上方,而任何權重爲0或更大的字符將其放回到這些字段下方的底部。看起來,電子郵件地址和密碼字段都具有「0」的權重。任何想法如何解決這個問題? – hockey2112 2017-05-26 22:11:53
我看到這個答案已被接受,但我認爲該代碼段缺少一些代碼。 $ form ['second_email']字段在哪裏創建? – greggles 2012-12-27 17:02:53
@greggles這是一段時間以前,但我可能只是把這些字段名稱作爲例子; '$ form ['first_email']'不會作爲標準 – Clive 2012-12-27 22:05:32