--- {"id":"form","title":"폼","category":"컴포넌트","order":40,"summary":"관련 입력을 한 작업으로 검증·저장의 사용·상태·접근성 계약.","status":"문서 기준 · UI 미검증","references":["components/form/usage"]} --- # 폼 ## 목적과 사용 관련 입력을 한 작업으로 검증·저장에 사용합니다. 긴 다단계 업무를 작은 모달 안에 억지로 넣지 않습니다. ## 구성과 변형 작업 제목, 관련 필드 그룹, 도움말·오류, 제출·취소. 변형의 외형은 각 제품의 기존 [토큰](tokens.md)을 사용합니다. Carbon의 크기·색·모서리·아이콘을 가져오지 않습니다. ## 동작 규칙 - FRM-01 MUST: 서버 검증이 최종 권한이며 클라이언트 검증은 보조입니다. - FRM-02 MUST: 필드 오류와 전체 실패를 지속적으로 볼 수 있게 제공합니다. - FRM-03 MUST: API·필드 이름·CSRF·method·기존 제출 이벤트 계약을 보존합니다. - FRM-04 MUST: 진행 중 제출을 제어하고 실패 후 다시 제출할 수 있게 합니다. ## 접근성 필드 그룹의 legend, 오류 연결과 첫 오류/요약으로의 적절한 포커스 이동을 정의합니다. 공통 [접근성 기준](accessibility.md)도 함께 적용합니다. ## 콘텐츠 예시 좋음: 필드 옆 오류 + 필요한 경우 요약 / 피함: 사라지는 toast만 표시. ## 우리 구현과 연결 VPS WickedFormNotice 계약, Blesta 원래 PHP Form helper, Panel 기존 요청 경로를 각각 유지합니다. 제품별 소유 경로는 [WICKEDVPS](product-vps.md), [Panel](product-panel.md), [Blesta](product-blesta.md)와 [소스 근거](source-evidence.md)를 확인합니다. 코드 존재와 모든 사용처의 준수는 다르며, 별도 표시가 없는 제품별 준수 상태는 미검증입니다. ## 상태와 검증 한글·빈 값·복수 오류·요청 지연·오류 수정·JS 없는 Blesta 폼 경로를 확인합니다. 일반·hover·focus·실행 중·실패·성공·disabled·read-only 중 해당하는 상태를 기록합니다. 해당하지 않는 상태를 임의로 만들지 말고 이유를 남깁니다. [검증 체크리스트](testing.md)에 증거를 연결합니다.