У меня есть контроллер, который управляет отправкой формы сброса пароля. Все работает отлично, кроме настройки сообщений. Я тоже безуспешно пытался изменить сообщение в файле .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']);
$ответ->отправить();
выход;
}
}
Тема не должна быть проблемой, потому что на каждой второй странице сообщения работают.