Альтернативный способ header (), чтобы остановить отправку формы обновления страницы - PullRequest
0 голосов
/ 04 марта 2019

Я работаю над веб-приложением с функцией отправки формы.Люди заполняют свою информацию и отправляют форму.Но у меня есть проблема, что люди могут повторно отправить форму при заполнении с F5 (обновление страницы).Теперь я использовал header (), чтобы исправить это.

Мне не очень нравится header (), потому что некоторым пользователям нужно отправить форму с другими данными ... И header () не работает должным образоминогда для меня.

Я программирую на PHP с помощью фреймворка Symfony. Возможно, у фреймворка есть какая-то функция для этого, я не могу это выяснить.

Надеюсь, люди знают, как хорошо работатьальтернативные способы заголовка ().Для достижения этого.

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Вы можете перенаправить пользователя на ту же страницу, используя «RedirectResponse» после отправки данных, тогда, если пользователь нажмет F5, он не будет отправлять другой запрос POST.Вы также можете использовать Ajax для отправки данных.

0 голосов
/ 04 марта 2019

Вы можете сделать что-то подобное с использованием метода redirectToRoute() из вашего контроллера:

class DefaultController extends Controller
{
    public function someAction(Request $request): Response
    {
        # create form and handle request
        $form = $this->createForm(YourFormType::class, $data);
        $form->handleRequest($request);

        if($form->isSubmitted() && $form->isValid()) {
            /* some logic here */

            # generate flash message
            $this->addFlash('success', 'Your flash message.');

            # refresh page or redirect to other page
            return $this->redirectToRoute('your_route_name');
        }

        /* some other logic */
    }
}

Дополнительные примеры Документов Symfony .

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