Drupal: оставайтесь на той же странице после регистрации - PullRequest
1 голос
/ 12 июля 2011

У меня есть блок с регистрационной формой, мне нужны люди, чтобы зарегистрироваться и остаться на той же самой странице, это возможно?

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

1 Ответ

3 голосов
/ 12 июля 2011

Как вы можете видеть в user_register_submit обработчик отправки , $form_state['submit'] жестко закодирован.

Это означает, что user_register_submit будет определять пункт назначения, если вы не переопределите его.

Это можно сделать, добавив собственный обработчик отправки (псевдокод).

function mymodule_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == "user_register") {
    //Look at the code in user_register_submit for all the ifs and switches to only
    // add this extra handler when a normal user signs up.
    $form['#submit'][] = "_mymodule_user_register_submit";
  }
}

function _mymodule_user_register_submit($form, &$form_state) {
  $form_state['redirect'] = $_GET['q']; //Adds the current url as redirect.
}

Затем, используя веса в системной таблице, убедитесь, что ваши модули запускаются после пользовательского модуля.В противном случае они вызываются по алфавиту, пользовательский модуль идет после mymodule;сбросьте перенаправление снова.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...