안녕하세요, 저는 제 필드에 제약이 있는 Symfony 5 양식을 가지고 있습니다. 길이에 대한 제약은 잘 작동하지만 NotBlank가 올바르지 않습니다. "유형" 및 "레이블" 필드가 있고 양식과 "유형" 제약 조건을 테스트하고 있습니다. "유형"이 비어 있는 양식의 유효성을 검사하면 "이 필드를 작성하십시오"라는 기본 브라우저 메시지가 표시됩니다. "NotBlank" 제약 조건에 대해 엔터티에 정의된 사용자 지정 메시지를 갖고 싶습니다.
문제는 "required => true"로 인해 발생한 것 같습니다. "false"로 변경하고 "empty_data => ''"를 추가하면 작동하고 사용자 정의 메시지를 볼 수 있지만 정확하게는 수정 양식에 없기 때문입니다. "type" 필드를 지우고 유효성을 검사하면 다음 메시지와 함께 나타납니다. 속성 경로 "type" "null"에 지정된 매개 변수 유형 "string"이 필요합니다.
저는 Symfony 5, Bootstrap 5를 사용하고 있습니다. 여기에 내 엔터티, 나뭇가지 양식 및 FormType.php가 있습니다
엔티티
으아아아나뭇가지 모양
으아아아formtype.php
으아아아도와주세요!
일부 포럼을 확인하고 "novalidate"를 사용해 보았으나 동일한 오류 메시지가 반환되었습니다. 저는 정말로 "required => true"를 유지하고 싶었고 "이 필드는 비워둘 수 없습니다"라는 사용자 정의 메시지를 받았습니다.
서버 측 오류와 프런트 엔드 오류를 혼동하고 계십니다. 작성하면
required => true
时,它会将 html 属性required
가 입력 요소에 적용됩니다. https://www.w3schools.com/tags/tryit.asp?filename=try html5_input_required이것이 기본 브라우저 오류가 나타나는 이유입니다. 시험해보고 싶다면 F12를 사용하여 입력된 html 태그를 검사하고 필요한 것을 제거할 수 있습니다.
그 다음에. 양식을 제출하는 데 성공한 경우(서버에 데이터 전송) Symfony는 자체 제약 조건(귀하의 주장)을 적용합니다.이것이 양식의 모든 항목에 이 기능을 사용하고 있기 때문에 양식에 오류가 올바르게 표시되는 이유입니다
form_errors
.그러나 이 경우 표시되는 오류는 서버에서 반환됩니다. 이는 브라우저 오류가 아닙니다.
무슨 일이 있어도
required => true
를 유지하는 것이 UX(사용자 경험)에 좋습니다. 완전한 사용자 경험을 위해서는 "동적" 오류만 표시하는 것이 좋습니다. 이는 사용자가 실수를 했다는 사실을 알기 전에 커밋을 강요당하는 것을 방지합니다.그러나 Symfony 제약 조건은 누군가가 제출할 수 있는 내용도 보호하므로 불완전한 데이터는 등록되지 않습니다. '중국의 벽'이라고 생각하시면 됩니다. 프로젝트 데이터를 투영하는 마지막 작업입니다.