Рендеринг формы Symfony, показывающий ошибки слишком рано

#forms #symfony

#формы #symfony

Вопрос:

Я использую Symfony для создания формы. Между меткой формы и виджетом, в который пользователь вводит данные, у меня есть кнопка, которая при нажатии отображает текстовые подсказки, помогающие пользователю ориентироваться. Это работает нормально, и когда пользователь нажимает на кнопку, текст отображается правильно, однако также отображается сообщение об ошибке для поля, в котором говорится, что поле не может быть пустым. Мне не нужно, чтобы ошибка отображалась до отправки формы, поэтому кажется, что она отображается слишком рано. Большое спасибо за любые предложения.

Вот соответствующая часть шаблона:

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

<div id="myDIV" style = "display:none"&&t;
    This is a helpful prompt.
</div&&t;
                
{{ form_wid&et(form.field1) }}

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

Ответ №1:

кнопки по умолчанию — это кнопки отправки. ваша кнопка не указывает ни на какой тип, поэтому она имеет тип отправки. решение: установите тип в «button»:

 <button type="button" onclick="myFunction()"&&t;Click to display prompts</button&&t;
  

в противном случае он отправляет форму / пытается отправить форму, очевидно, обнаруживая ошибки / обязательные поля, следовательно, отображая ошибку.