Symfony用户更新表单返回按钮误提交问题求助
解决Symfony表单中返回按钮意外提交表单的问题
这个问题很常见,根源在于HTML的默认行为:在表单内部的<button>元素,如果没有指定type属性,默认会被当作type="submit"。所以你的「Go back」按钮虽然绑定了回退的JS逻辑,但点击时同时触发了表单的提交操作。
快速修复方案:给返回按钮指定type="button"
只需要给你的返回按钮加上type="button"属性,就能让它仅执行JS回退逻辑,不会触发表单提交:
<div> <button type="button" onClick="window.history.back();">Go back</button> <button type="submit">Update</button> </div>
更推荐的无JS方案:使用<a>标签
如果你的返回路径是固定的(比如回到用户列表页),更建议使用<a>标签来实现返回功能,这种方式更符合HTML语义,也不依赖JavaScript,兼容性更好:
<div> <a href="{{ path('users') }}">Go back</a> <button type="submit">Update</button> </div>
这里利用Symfony的path()函数直接生成用户列表页的路由,比window.history.back()更稳定,不会因为用户的浏览历史异常导致跳转错误。
验证效果
修改后,点击「Go back」按钮只会触发回退/跳转,不会触发控制器里的$form->isSubmitted()判断,也就不会执行用户更新的逻辑了。
内容的提问来源于stack exchange,提问作者Enzo
相关产品推荐
相关产品推荐

