標準の 'アカウントの作成'ページに追加フィールドを追加しました。特に、 '確認メール'フィールド。Drupal 7 - 電子メールアドレスの確認
独自のカスタム検証ルールを追加できるように(たとえば、2つの電子メールが一致しているかどうかを確認するため)、検証にどのようにフックしますか?
hook_user_presaveですが、コード化する方法や配置する場所が不明です。
ありがとうございました。
標準の 'アカウントの作成'ページに追加フィールドを追加しました。特に、 '確認メール'フィールド。Drupal 7 - 電子メールアドレスの確認
独自のカスタム検証ルールを追加できるように(たとえば、2つの電子メールが一致しているかどうかを確認するため)、検証にどのようにフックしますか?
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のキャッシュを作成します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.');
}
}
こんにちは、これは私の登録ページではうまくいきますが、パスワードフィールドの下に確認フィールドが表示されています。 [パスワード] [パスワード確認] [電子メール確認] [電子メール確認]フィールドが[電子メール]フィールドの直後になるように、これらの並べ替えを行うにはどうすればよいですか? – hockey2112
@ hockey2112いくつかの値とともに '#weight'属性を追加することができます。 – kenorb
weight属性を追加すると影響がありますが、 "-1"の重みは確認フィールドを電子メールアドレスフィールドとパスワードフィールドの上に置き、0以上の値を指定するとそのフィールドの下に下に戻ります。 [電子メールアドレス]フィールドと[パスワード]フィールドの重みはすべて「0」であるようです。それを回避する方法に関するアイデア? – hockey2112
私はこの答えが受理された参照が、私は、コードスニペットは、コードのビットが欠けていると思います。 $ form ['second_email']フィールドはどこに作成されていますか? – greggles
@gregglesもう少し前ですが、おそらく例としてフィールド名を入れています。 '$ form ['first_email']'は標準ではありません – Clive