이 기능은 더 이상 실험적이지 않습니다!
이 기능에 대해 자세히 알고 싶거나 커뮤니티에서 사용하는 방법을 확인하려면 여기를 클릭하세요: Creating form templates
Discourse Meta 커뮤니티 여러분, 안녕하세요!
새로운 실험적 기능인 **폼 템플릿(form templates)**을 소개하게 되어 기쁩니다. 이 기능을 사용하면 토픽 생성 흐름의 일부로 데이터 유효성 검사가 포함된 구조화된 폼을 적용할 수 있습니다.

기능 활성화
이 기능은 사이트 전체 실험 플래그 뒤에 숨겨져 있습니다. 활성화하려면
관리자 ▸ 설정에서 experimental_form_templates 사이트 설정을 켜면 됩니다.
템플릿 관리
폼 템플릿은
관리자 ▸ 커스터마이즈 ▸ 템플릿(/admin/customize/form-templates/)에서 생성, 편집 및 삭제할 수 있습니다.
여기서는 포럼에 존재하는 템플릿 목록이 표로 표시됩니다. 기존 템플릿을 편집, 삭제, 미리보기하거나 새 템플릿을 만들 수 있습니다. 표에는 각 템플릿이 현재 활성 상태인 카테고리도 표시됩니다.
템플릿은 YAML 구조로 정의됩니다. 직접 입력하거나 상단의 “추가” 버튼을 사용하여 특정 입력 유형을 정의하는 예제 YAML 코드 조각을 끝에 추가할 수 있습니다.
모든 필드 유형을 포함한 완전한 YAML 예제는 다음과 같습니다:
- type: input
id: name
attributes:
label: "Full name"
placeholder: "eg. John Smith"
description: "What is your full name?"
validations:
required: true
minimum: 2
maximum: 100
- type: textarea
id: introduction
attributes:
label: "Introduction"
placeholder: "A short introduction"
description: "Write a short introdution about yourself"
validations:
required: true
minimum: 10
maximum: 500
- type: dropdown
id: fav-animal
attributes:
label: "Favorite animal"
description: "Select your favorite animal"
none_label: "Select an option"
choices:
- "Dog"
- "Cat"
- "Other"
validations:
required: true
- type: multi-select
id: comm-channel
attributes:
label: "Communication channels:"
description: "Select your preferred communication channels:"
none_label: "Select an option"
choices:
- "Email"
- "Phone"
- "Messenger"
- type: upload
id: cat-photo
attributes:
label: "Cat photo"
description: "Send a photo of your cat (or any cat)"
file_types: ".jpg, .png"
allow_multiple: false
- type: checkbox
id: accept-terms
attributes:
label: "I have read and I agree to the terms"
description: "You need to accept terms to continue"
validations:
required: true
유효성 검사(Validations)
각 필드에 대해 폼을 생성하려면 통과해야 하는 유효성 검사 옵션을 추가할 수 있습니다. 사용 가능한 유효성 검사 목록을 보려면 코드 에디터 위 Validations 버튼을 클릭하세요. 그러면 각 유효성 검사 옵션의 문법과 의도된 사용법이 설명됩니다.
유효성 검사 옵션
| Key | Type | Description |
|---|---|---|
| required | boolean | 폼 제출을 위해 필드 입력을 필수로 합니다 |
| minimum | integer | 텍스트 필드의 경우 허용되는 최소 글자 수를 지정합니다 |
| maximum | integer | 텍스트 필드의 경우 허용되는 최대 글자 수를 지정합니다 |
| pattern | regex string | 텍스트 필드의 경우 허용되는 입력을 지정하는 정규식입니다 |
| type | string | 입력 필드의 경우 예상되는 입력 유형(text |
카테고리에 템플릿 적용
폼 템플릿을 생성한 후에는 해당 템플릿을 카테고리에 적용하고 싶을 것입니다. 이렇게 하려면 템플릿을 적용하려는 카테고리의 설정으로 이동하세요.
Template 메뉴를 선택한 후 오른쪽에서 스위치를 사용하여 폼 템플릿을 켜세요. 활성화되면 드롭다운을 사용하여 카테고리에 하나 이상의 템플릿을 추가할 수 있습니다.
폼 작성
템플릿이 카테고리에 적용되면, 해당 템플릿이 있는 카테고리를 선택하여 토픽을 생성할 때 템플릿의 폼이 자동으로 표시됩니다. 카테고리에 두 개 이상의 템플릿이 할당된 경우, 사용 가능한 템플릿 간을 전환하는 선택기도 볼 수 있습니다.
폼을 작성할 때 폼 템플릿 정의에 지정된 유효성 검사를 따르며, 유효해져야만
토픽 생성을 눌러 모든 입력 필드로부터 토픽 내용을 생성할 수 있습니다.
마지막으로, 제출 후 토픽 내용은 모든 입력된 필드로 구성됩니다:
폼 값 사전 입력(Pre-filling)
폼 템플릿에 정의된 필드 ID와 일치하는 매개변수를 사용하여 /new-topic을 호출함으로써 폼 값을 사전으로 입력할 수도 있습니다. 예를 들어, 이전에 예제로 사용된 템플릿의 경우:
/new-topic?name=John%20Smith&favorite-animal=Cat
로드맵
- 토픽 생성 시 토픽 데이터에 JSON 출력을 저장
- 폼 템플릿이 있는 카테고리에서 자유 형식 작성기를 선택하여 사용할 수 있도록 하는 토글 추가
도움을 주실 수 있는 방법
이 새로운 기능에 대한 여러분의 피드백을 듣고 싶습니다. 관리자이시며 포럼에서 시도해 보고 싶으시다면 experimental_form_templates 설정을 켜고 바로 사용하실 수 있습니다!
경험을 공유하거나 버그를 보고하거나 제안을 제공하기 위해 form-templates 태그가 붙은 새 토픽을 시작해 주세요.
Discourse를 더 좋게 만드는 데 도움을 주셔서 감사합니다!









