Symfony 4: редирект с параметрами записи при неудачной регистрации - PullRequest
0 голосов
/ 26 апреля 2019

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

Итак

1) У меня есть AccountrController.php с двумя методами 2) У меня есть registerPage, который просто отображаетШаблон веточки (с формой).

public function registerPage()
{
    return $this->render("@Frontend/register.html.twig");
}

3) У меня есть регистрацияAction.К этой форме действия отправляются данные.

public function registerAction()
{
     ... $this->post["username"] ...

4) Когда регистр не удается по каким-либо причинам для проверки, он перенаправляется обратно к registerPage следующим образом:

return $this->redirect($this->referer);

5) И какпримечание formbuilder здесь не используется.Форма встраивается в HTML / Twig.

Проблема в том, что при сбое регистрации появляется сообщение об ошибке (через flashbag), но уже заполненные поля остаются пустыми.Потому что перенаправление - это страница GET, а параметры POST не передаются. Как исправить это лучше и быстрее?

Ответы [ 2 ]

0 голосов
/ 26 апреля 2019

Я бы предложил использовать построитель форм. Потому что он будет поддерживать заполненные данные, пока происходит проверка формы.Все подробности вы получите на сайте symfony :

0 голосов
/ 26 апреля 2019

Я бы посоветовал вам использовать Symfony FormType для этой цели. Он уже обрабатывает вещи, которые вы хотите достичь! Но если вы все еще предпочитаете делать всю работу самостоятельно:

Нет перенаправления POST! Вы можете:

a) Перенаправление с получением параметров (и изменение маршрута на GET-метод)

b) Сохраните данные в сеансе перед перенаправлением и прочитайте их позже, как:

// save to session before redirect
$session = $this->getRequest()->getSession();
$session->set('your_data' => $_POST);

// get from session after redirect
$session = $this->getRequest()->getSession();
$data = $session->get('your_data');

В любом случае, я бы не использовал другое Действие для отображения Формы при ошибке. Просто используйте одно действие контроллера и, если есть ошибки, покажите их - в противном случае отправьте. Вот хороший пример того, как обрабатывать форму:

Обработка отправленных форм

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