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();
}
}
}
我建议您还在控制器中查找并适当处理该表格中的重复提交,因为任何熟练的用户仍然可以提交表格。
参考:
检测后面按钮单击
禁用输入