Drupal 8 - программный редирект в форме в модуле пользовательского блока не работает - PullRequest
0 голосов
/ 08 октября 2019

Я новичок в Drupal, и меня попросили добавить перенаправление в пользовательский модуль, который был написан для нас. К сожалению, перенаправление не работает.

Модуль реализован в виде блока и работает без кода перенаправления. Модуль имеет форму в расположении docroot \ modules \ custom \ modulename \ src \ Form \ filename.php, и это то, что я пытаюсь отредактировать.

В этой форме есть функция submitForm, в которой япытаюсь использовать следующий код:

$response = new RedirectResponse('/');
$response->send();
return;

Этот блок был размещен на странице. Давайте назовем это «/ en / testpage». Однако, несмотря на то, что после отправки формы пробуются всевозможные допустимые страницы в RedirectResponse, такие как «/», «/ en / members» и т. Д., Пользователь всегда возвращается к https://theNameOfTheWebsite/en/testpage#block-theNameOfTheBlock вместо того, чтоЯ пытаюсь перенаправить на.

Буду очень признателен, если кто-нибудь узнает, как я могу решить эту проблему. Я застрял на этой проблеме в течение последних 2 дней. Благодарю. Если это помогает, структура папок внутри папки модуля похожа на следующую: «src \ Form», «Plugin \ Block», «template».

1 Ответ

0 голосов
/ 09 октября 2019

Привет mkha13 Добро пожаловать в Stackoverflow

ваш код не работает с кодом перенаправления

Сначала проверьте сообщения журнала, если они естьзарегистрированное сообщение об этом на

/ admin / reports / dblog

Проверьте, не включаете ли вы класс RedirectResponse
Если он не включен, включите его в эту строку наначало класса вашей формы

use Symfony\Component\HttpFoundation\RedirectResponse;

Другое решение:

/**
 * {@inheritdoc}
 */
public function submitForm(array &$form, FormStateInterface $form_state) {
  $form_state->setRedirect("routingName");
}

routingName - это имя машины, указанное в файле маршрутизации.

Перенаправление на первую страницу

$form_state->setRedirect('<front>');

Надеюсь, это поможет вам

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