Реализация hook_user_insert не регистрирует моего пользователя - PullRequest
2 голосов
/ 26 августа 2011

Я пытаюсь перенаправить пользователей на определенную страницу после создания их учетной записи, но когда они туда попадают, они не входят в систему.

function mymodule_user_insert(&$edit, $account, $category) {
  drupal_goto("node/3");
}

Должен ли я что-то добавить, чтобы убедиться, чтопользователь вошел в систему после создания его учетной записи?

Ответы [ 2 ]

2 голосов
/ 26 августа 2011

hook_user_insert () вызывается после вставки учетной записи пользователя в таблицу базы данных, что происходит, когда один из пользователей-администраторов создает учетную запись пользователя на административных страницах или когда модуль программно создает учетная запись пользователя.
Цель ловушки - сохранить пользовательские данные, которые модуль связывает с учетной записью пользователя. Звонить drupal_goto() в этом случае неправильно.

Чтобы перенаправить пользователя после регистрации, вы можете реализовать код, подобный следующему. («mymodule» - просто пример короткого имени для модуля; замените его на короткое имя модуля, который вы используете / создаете.)

function mymodule_form_ user_register_form_alter(&$form, &$form_state) {
  // Add a form submission handler to the registration form.
  $form['#submit'][] = 'mymodule_user_register_submit';
}

function mymodule_user_register_submit($form, &$form_state) {
  $form_state['redirect'] = 'where you want to redirect the user';
}

Учтите, что при выполнении этого кода пользователям по-прежнему необходимо войти в систему, и (в зависимости от настроек сайта) им может понадобиться сначала получить электронное письмо, которое Drupal отправляет пользователям, когда он настроен на первую проверку адрес электронной почты, указанный зарегистрированными пользователями.

Если вы хотите перенаправить пользователя после входа в систему, вы должны реализовать hook_user_login () , но пользователю необходимо сначала войти в систему.

0 голосов
/ 26 августа 2011

Это не место для этого, так как его следует использовать только для публикации пользовательских дополнений в базе данных, см. Документацию здесь .

Самый простой способ сделать это - использовать модуль назначения входа в систему, поскольку он уже опробован и протестирован и выполняет то, что вам нужно. Чтобы увидеть, как они это делают, взгляните на источник.

http://drupal.org/project/login_destination

В качестве альтернативы вы должны добавить свой код к hook_user_login

...