#redirect #drupal #drupal-8 #drupal-modules
Вопрос:
Я пытаюсь перенаправить пользователей после входа в систему на адрес назначения, указанный в URL-адресе, например : /пользователь/логин?назначение=мои модули
Я использую этот модуль для перенаправления на страницу входа в систему вместо отображения страницы 403 : https://www.drupal.org/project/r4032login
Он хорошо работает и генерирует URL-адрес с параметром ‘?destination=’, но после входа в систему я каждый раз перенаправляюсь на домашнюю страницу.
Модуль должен управлять этим сам по себе, но я все равно попытался создать пользовательский модуль для перенаправления, я создал пользовательский модуль и установил его, но по-прежнему ничего не происходит.
Вот мой код :
use DrupalCoreFormFormStateInterface;
use DrupalCoreUrl;
/**
* Implements hook_form_FORM_ID_alter().
*/
function test_redirect_form_user_login_form_alter(amp;$form, FormStateInterface $form_state, $form_id) {
$form['#submit'][] = 'test_redirect_user_login_form_submit';
}
/**
* Custom submit handler for the login form.
*/
function test_redirect_user_login_form_submit($form, FormStateInterface $form_state) {
$url = Url::fromRoute('a route');
$form_state->setRedirectUrl($url);
}
Как я правильно это делаю ? Спасибо
Комментарии:
1. Убедитесь, что вы включили свой модуль и его имя машины
test_redirect
. Я попробовал ваш приведенный выше код, и он отлично работает2. Мне пришлось изменить его на $form[‘действия’][‘отправить’][‘#отправить’] [], чтобы заставить его вызвать обработчик, но теперь я не могу получить параметр «назначение» в этом коде.
3. Попробуй это:
$request = Drupal::service('request_stack')->getCurrentRequest(); $destination = $request->request->get('destination');
Ответ №1:
Я знаю, что вы просили помочь с вашим кодом. Я не очень хорошо разбираюсь в пользовательских модулях. Может быть, этот модуль поможет вам:
https://www.drupal.org/project/login_destination
Я использовал его, и он довольно хорош, но может не соответствовать вашим потребностям.
Как только вы установите его, у вас будет возможность установить разные места входа для разных пользователей, найденных по адресу [mysite.com]/администратор/конфигурация/люди/вход-назначение
Ответ №2:
Перенаправление пользователя (Перенаправление пользователя после входа в систему или выхода из системы) помогает перенаправить пользователя после входа в систему или выхода из системы. Этот модуль совместим с последними версиями Drupal и имеет полный охват безопасности.