SYMFONY 4:表格提交后如何处理后箭头



i具有由随机算法生成的表单(测验测试(。提交后,渲染是一个结果页面:问题是如果用户单击后箭头,则将显示具有相同问题的表格,并可以再次提交!我尝试设置一个会话变量并使用twig函数{如果app.sesseion-> get('myvaryable'(被定义},然后不显示提交按钮等...但是,即使在我的我中删除了变量控制器,树枝仍然认为它是定义的吗?您还有另一个简单的解决方案吗?

单击浏览器中的后退按钮通常会导致从缓存重新加载的页面(与服务器无相互作用(,因此您无法用Twig(后端代码(控制此页面(后端代码(,除非用户刷新页面(将请求重新归为服务器(。

您需要下面的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();   
        }
    }
}

我建议您还在控制器中查找并适当处理该表格中的重复提交,因为任何熟练的用户仍然可以提交表格。

参考:

检测后面按钮单击

禁用输入

最新更新