Я хочу сцепиться в регистрационный модуль. У меня уже есть база данных 50 000 пользователей, которые используют мой старый веб-сайт. Теперь я мигрирую на Drupal.
Я все еще не переместил записи в drupal базу данных. Я буду проверять по своей старой базе данных.
Когда пользователь пытается зарегистрироваться в Drupal, я должен проверить, присутствует ли имя пользователя, которое он дал уже, в том списке 50000 (и растущий) записи. Если это существует, я должен отменить регистрацию, показывающую сообщение об ошибке, говоря, что имя пользователя существует..
Какой рычаг я должен использовать? Если мои кодовые группы, которые привела к сбою проверка, Как я могу сказать drupal отображать сообщение об ошибке?
Править: Я сцепился в hook_user и проверил на 'проверение' op. Я могу проверить и присвоить сообщения об ошибках. Но это происходит для всех форм. Я хочу проверить только новую форму создания учетной записи. Как я могу сделать это?
Спасибо.
Вы должны зарегистрировать дополнительную функцию обратного вызова валидации для формы регистрации, используя hook_form_FORM_ID_alter()
, примерно так:
// Alter the registration form
function yourModuleName_form_user_register_alter(&$form, &$form_state) {
// Add your own function to the array of validation callbacks
$form['#validate'][] = 'yourModuleName_user_register_validate';
}
// Perform your own validation
function yourModuleName_user_register_validate($form, &$form_state) {
// Extract the submitted name
$name = $form_state['values']['name'];
// Check it according to your own logic
$is_valid_name = your_check_for_valid_name();
// File error, when not valid
if (!$is_valid) {
form_set_error('name', t('Name already taken, please choose a different one'));
}
}