Рейтинг:0

Сообщения о состоянии не отображаются

флаг us

У меня есть контроллер, который управляет отправкой формы сброса пароля. Все работает отлично, кроме настройки сообщений. Я тоже безуспешно пытался изменить сообщение в файле .module. Он работал на Drupal 8, но после перехода на Drupal 9 больше не работает. Вот код:

<?php

пространство имен Drupal\custom_form_save\Controller;

используйте Symfony\Component\HttpFoundation\Response;
используйте \Drupal\Core\Session\AccountProxyInterface;
используйте \Drupal\user\UserInterface;
используйте Drupal\Core\Image\ImageFactory;
используйте \Drupal\user\Entity\User;
используйте \Drupal\node\Entity\Node;
используйте \Drupal\file\Entity\File;
используйте \Drupal\Core\Entity\EntityManagerInterface;
используйте \Drupal\Core\Entity\EntityInterface;
используйте Drupal\comment\Entity\Comment;
используйте Drupal\Core\Controller\ControllerBase;
используйте Drupal\block\Entity\Block;
используйте Drupal\Core\Block\BlockBase;  
используйте Drupal\Core\Session\AccountInterface;
используйте Symfony\Component\HttpFoundation\Request;
используйте Drupal\node\NodeInterface;
используйте Drupal\image\Entity\ImageStyle;
используйте Symfony\Component\HttpFoundation\RedirectResponse;
используйте Drupal\user\PrivateTempStoreFactory;
используйте Symfony\Component\DependencyInjection\ContainerInterface;
используйте Drupal\custom_form_save\Controller\EmailsController;
используйте Drupal\content_manager\Controller\StaticController;
используйте Drupal\Core\Messenger\MessengerInterface;

класс ResetPasswordSendController расширяет ControllerBase {

  общедоступная функция resetpasswordsend () {

    $static_functions = новый StaticController();
    $routes = $static_functions->urlmanagerwebsite();
    
    $session = \Drupal::service('session');
    если (!$session->isStarted()) {
      $сессия->мигрировать();
    }

    $host = \Drupal::request()->getSchemeAndHttpHost();
    $name = $_POST['электронная почта'];
    $langcode = \Drupal::languageManager()->getCurrentLanguage()->getId();
    $users = \Drupal::entityTypeManager()->getStorage('user')->loadByProperties(array('mail' => $name));
    если (!пусто($пользователей)) {
      $ учетная запись = сброс ($ пользователей);
      $mail = _user_mail_notify('password_reset', $account, $langcode);
      \Drupal::messenger()->addMessage('Wir haben eine Anleitung zum Zurücksetzen des Passwords an deine registriete E-Mail-Adresse gesendet.'); //НЕ РАБОТАЕТ
      $response = новый RedirectResponse($host . $routes['resetpassword']);
      $ответ->отправить();
      выход;
    }

    $добавитьсообщение = $имя. ' wird nicht als E-Mail-Adresse erkannt.';
    $this->messenger()->addMessage($addmessage); //НЕ РАБОТАЕТ
    $session->set('messagescustom', $addmessage); //НЕ РАБОТАЕТ
    \Drupal::messenger()->addMessage('Установленный адрес электронной почты не указан.'); //НЕ РАБОТАЕТ
    $response = новый RedirectResponse($host . $routes['resetpassword']);
    $ответ->отправить();
    выход;
  }
}

Тема не должна быть проблемой, потому что на каждой второй странице сообщения работают.

флаг fr
См. https://drupal.stackexchange.com/questions/138697/what-function-method-can-i-use-to-redirect-users-to-a- Different-page/303653#303653
4uk4 avatar
флаг cn
Вы пытались вернуть $response, а не отправить и выйти?
Jaypan avatar
флаг de
Для перенаправления с контроллера вы можете использовать return `$this->response($route=name);`. Может быть, это поможет. https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Controller%21ControllerBase.php/function/ControllerBase%3A%3Aredirect/9.3.x
флаг us
@anonymous: Спасибо, что решили проблему!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.