Symfony 4: как обрабатывать стрелку назад после отправки формы - PullRequest
0 голосов
/ 21 июня 2019

У меня есть форма, сгенерированная случайным алгоритмом (тест на викторину).после отправки рендер представляет собой страницу результатов: проблема в том, что если пользователь щелкнет стрелку назад, форма с такими же вопросами будет отображена и может быть отправлена ​​снова !!я попытался установить переменную сеанса и играть с функцией ветки {если app.sesseion-> get ('myVaryable') определен}, то не отображать кнопку отправки и т. д. ... но даже когда переменная удалена в моем контроллере, веточкавсе еще считают это определенным ... ??у вас есть другое простое решение?

1 Ответ

2 голосов
/ 22 июня 2019

Нажатие кнопки «Назад» в браузере обычно приводит к перезагрузке страницы из кэша (без взаимодействия с сервером), так что вы не можете управлять этим с помощью ветки (код сервера), если пользователь не обновляет страницу (повторно отправляет запрос на сервер).

Вам необходимо решение javascript (интерфейсный код), как показано ниже, для проверки типа навигации.

if (window.performance && window.performance.navigation.type == window.performance.navigation.TYPE_BACK_FORWARD) {

    // Disable the form
    var inputs = document.getElementsByTagName("INPUT");
    for (var i = 0; i < inputs.length; i++) {
        inputs[i].disabled = true;
        if (inputs[i].type === 'submit') {
            inputs[i].remove();   
        }
    }

}

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

Ссылки:

обнаружение нажатия кнопки назад

отключение входов

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