# Khai báo dữ liệu đầu vào

Thêm trường, chọn kiểu, đặt giá trị mặc định và dùng Payload để chuẩn bị dữ liệu cho mẫu.

Để dùng một mẫu với nhiều bộ dữ liệu, trước hết bạn cần cho Tembuilder biết mẫu sẽ nhận những trường nào. Phần **Parameters** giúp bạn đặt tên, chọn kiểu và chuẩn bị giá trị mặc định cho các trường đó.

Bạn có thể bắt đầu với một trường đơn giản, nối nó vào HTML rồi mở Payload để xem cấu trúc dữ liệu đã tạo.

## 1. Thêm trường trong Schema

Mở **Parameters**, chọn **Schema** rồi bấm **Add**. Đổi tên trường được tạo thành tên bạn muốn dùng, ví dụ `recipient`.

| Kiểu | Dữ liệu phù hợp |
| --- | --- |
| Text | Tên, địa chỉ, mã tham chiếu hoặc chuỗi đã định dạng. |
| Number | Số lượng hoặc giá trị số. |
| Boolean | Giá trị `true` / `false`. |
| Object | Nhóm trường có tên. |
| Array | Danh sách các phần tử cùng cấu trúc. |

**Color** và **Asset** là kiểu dành cho Props trong giao diện hiện tại, không nằm trong danh sách kiểu của Parameters.

<figure class="doc-sim data-assets-illustration" aria-label="Parameters → Add → Schema">
<div class="sim-stage"><div class="sim-panel"><div class="ds-head"><strong>Parameters</strong><span class="sim-control sim-focus">＋ Add</span></div><div class="sim-tabs"><span class="sim-active">Schema</span><span>Payload</span></div><div class="sim-prop-card ds-field"><div class="sim-prop-name"><b>recipient</b><span class="ds-type">Text <svg class="sim-chevron" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><path d="m4 6 4 4 4-4" /></svg></span></div><div class="sim-prop-value"><small class="sim-label">DEFAULT</small><span class="sim-input">Tembuilder</span><span class="sim-embed">{{ params.recipient }}</span></div></div></div></div>
<figcaption>Parameters → Add → Schema</figcaption>
</figure>

## 2. Đặt Default và Required

Trên thẻ trường, điền **Default** để có giá trị dùng khi bên gọi bỏ qua trường đó. Dấu bắt buộc ở đầu thẻ bật/tắt trạng thái **Required** của trường.

Chọn giá trị đúng kiểu: Number dùng `2`, Boolean dùng `true` hoặc `false`; không dùng chuỗi `"2"` thay cho số. Một chuỗi rỗng vẫn là giá trị đã gửi, không đồng nghĩa với việc bỏ trường khỏi dữ liệu.

Bạn có thể thêm mô tả ở thẻ trường để ghi rõ ý nghĩa, đơn vị hoặc cách đặt giá trị cho người sử dụng mẫu.

<figure class="doc-sim data-assets-illustration" aria-label="Tên trường, kiểu, Default và dấu Required nằm trên cùng một thẻ">
<div class="sim-stage"><div class="sim-panel"><div class="ds-head"><strong>Schema</strong></div><div class="sim-prop-card ds-field"><div class="sim-prop-name"><b>recipient <em>*</em></b><span class="ds-type">Text <svg class="sim-chevron" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><path d="m4 6 4 4 4-4" /></svg></span></div><div class="sim-prop-value"><small class="sim-label">DEFAULT</small><span class="sim-input sim-focus">Tembuilder</span><span class="sim-embed">{{ params.recipient }}</span></div></div></div><div class="ds-rows"><div><span>Default</span><small>Dùng khi không truyền trường này</small></div><div><span>Required</span><small>Đánh dấu trường bắt buộc</small></div></div></div>
<figcaption>Tên trường, kiểu, Default và dấu Required nằm trên cùng một thẻ</figcaption>
</figure>

## 3. Nối trường với nội dung

Mỗi thẻ có một biểu thức **EMBED**. Với trường `recipient`, chèn vào HTML của section:

```handlebars
<p>{{ params.recipient }}</p>
```

`recipient` phải khớp tên trong Schema. Nếu đổi tên trường sau này, cập nhật cả biểu thức trong HTML và dữ liệu đang gửi vào mẫu.

<figure class="doc-sim data-assets-illustration" aria-label="Sao chép biểu thức EMBED vào HTML của section">
<div class="sim-stage"><div class="sim-prop-card ds-field"><div class="sim-prop-name"><b>recipient</b><span class="ds-type">Text <svg class="sim-chevron" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><path d="m4 6 4 4 4-4" /></svg></span></div><div class="sim-prop-value"><small class="sim-label">DEFAULT</small><span class="sim-input">Tembuilder</span><span class="sim-embed">{{ params.recipient }}</span></div></div><div class="ds-code sim-focus"><code>{{ params.recipient }}</code></div></div>
<figcaption>Sao chép biểu thức EMBED vào HTML của section</figcaption>
</figure>

## 4. Lấy cấu trúc từ Payload

Chuyển sang **Payload** để xem object được tạo từ các trường và giá trị mặc định:

```json
{
  "recipient": "Tembuilder",
  "copies": 2,
  "showNotes": true
}
```

Đây là object dữ liệu của mẫu. Dùng cùng cấu trúc khi nhập dữ liệu trong **Run**. Khi tích hợp qua API, object này nằm trong trường `parameters` của yêu cầu; xem [Render API reference](/docs/vi/developers/render-reference/) để xem các field và endpoint.

Với trường lồng nhau hoặc danh sách, tiếp tục ở bài [Object, array và bảng dữ liệu](/docs/vi/data/arrays-objects/).

<figure class="doc-sim data-assets-illustration" aria-label="Schema → Payload → Run">
<div class="sim-stage"><div class="sim-panel"><div class="ds-head"><strong>Parameters</strong></div><div class="sim-tabs"><span>Schema</span><span class="sim-active">Payload</span></div><div class="ds-code sim-focus"><code>{</code><code>  "recipient": "Tembuilder",</code><code>  "copies": 2,</code><code>  "showNotes": true</code><code>}</code></div></div></div>
<figcaption>Schema → Payload → Run</figcaption>
</figure>
