Symfony表单渲染显示错误太早

问题描述

我正在使用Symfony创建表单。在表单标签用户输入数据的小部件之间,我有一个按钮,当按下该按钮时会显示文本提示,以帮助指导用户。这可以正常工作,当用户单击按钮时,它会正确显示文本,但是也会显示该字段的错误消息,表明该字段不能为空。在提交表单之前,我不需要显示错误,因此似乎显示得太早了。非常感谢您的任何建议。

这是模板的相关部分:

{{ form_start(form) }}
                 
{{ form_label(form.field1,'My Custom Task Label') }}
                   
<button onclick="myFunction()">Click to display prompts</button>

<div id="myDIV" style = "display:none">
    This is a helpful prompt.
</div>
                
{{ form_widget(form.field1) }}

<script>
    function myFunction() {
    var x = document.getElementById("myDIV");
    if (x.style.display === "none") {
        x.style.display = "block";
        } else {
        x.style.display = "none";
        }
    }
</script>
                
{{ form_end(form) }}

解决方法

按钮默认是提交按钮。您的按钮未指示任何类型,因此为提交类型。解决方案:将类型设置为“按钮”:

<button type="button" onclick="myFunction()">Click to display prompts</button>

否则,它正在发送表单/尝试发送表单,显然捕获了错误/必填字段,因此显示了错误。