logologo
Get Started
Tutorials
Guide
Development
Plugins
API
Home
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Get Started
Tutorials
Guide
Development
Plugins
API
Home
logologo

V2 Tutorial (IT Ticket System)

Tutorial Overview
Chapter 1: Getting Started — Build a Working System in 5 Minutes
Chapter 2: Data Modeling — Two Tables for a Complete Ticket System
Chapter 3: Building Pages — From Blank to Functional
Chapter 4: Forms & Details — Input, Display, All in One
Chapter 5: Users & Permissions — Who Sees What
Chapter 6: Workflows — Let the System Do the Work
Chapter 7: Dashboard — The Big Picture at a Glance

V1 Tutorials (Legacy)

Task Management System Overview
Chapter 1: Getting Started
Chapter 2: Designing the System
Chapter 3: Task Data Management
Chapter 4: Task & Comment Plugins
Chapter 5: Tabs & Dynamic Blocks
Chapter 6: User & Permissions
Chapter 7: Workflow
Project Management Overview
Chapter 8: Knowledge Base - Tree Collection
Chapter 9: Task Dashboard & Charts
Chapter 10: Dashboard Filters & Conditions
Chapter 11: Subtasks & Work Hours
Chapter 12: Meeting Room Booking & Workflows
Implementing User Registration Review
Implementing CRM Lead Conversion
Markdown Blocks Tips and Tricks
CRM Sales Cloud Overview
Lead Follow-up & Status Management
CRM System (Sales Cloud)
Using API Keys to Retrieve Data
Markdown Template Variables
How to Deploy NocoBase Faster
CRM Sales Pipeline Visualization
CRM Demo Deployment Guide
Previous PageChapter 3: Building Pages — From Blank to Functional
Next PageChapter 5: Users & Permissions — Who Sees What

#Chapter 4: Forms & Details — Input, Display, All in One

In the last chapter, we built the ticket list — data is now visible. But how do users submit new tickets? In this chapter, we'll solve the "entering data" problem — building Form blocks, configuring field linkage, and even tracking every change made to a ticket.

#4.1 Creating a New Ticket Form

We want to add a "New" button to the ticket list page. Clicking it will pop up a form for users to fill in a ticket.

#Adding the "Add new" Action Button

  1. Make sure you're in UI Editor mode (top-right toggle is on).
  2. Go to the "All Tickets" page, and click "Actions" above the Table block.
  3. Check the "Add new" action button.
  4. An "Add new" button will appear above the table. Clicking it opens a popup.

04-forms-and-details-2026-03-13-09-43-54

#Configuring the Form in the Popup

  1. Click the "Add new" button to open the popup.

  2. In the popup, click "Add block" -> Data blocks -> Form (Add new).

  3. Select "Current collection". The popup already knows which collection it's associated with — no need to specify manually.

    04-forms-and-details-2026-03-13-09-44-50

  4. In the form, click "Fields" and check the following fields:

FieldConfiguration Notes
TitleRequired (auto-inherited)
DescriptionRich text input
StatusDropdown select (we'll set a default via linkage rules later)
PriorityDropdown select
CategoryA relation field that automatically appears as a dropdown selector
SubmitterRelation field (we'll set a default via linkage rules later)
AssigneeRelation field

04-forms-and-details-2026-03-13-12-44-49

You'll notice a red asterisk * next to "Title" automatically — because we set it as required when creating the field in Chapter 2. Forms automatically inherit required rules from the collection's field settings; no extra configuration needed.

04-forms-and-details-2026-03-13-12-46-34

Tip: If a field isn't required at the collection level but you want it required in this specific form, you can set it individually in the field's settings.

04-forms-and-details-2026-03-13-12-47-26

#Adding the Submit Button

  1. Below the Form block, click "Actions".
  2. Check the "Submit" button.

04-forms-and-details-2026-03-13-16-30-06

  1. After filling in the form, users can click Submit to create a new ticket.

04-forms-and-details-2026-03-13-16-32-19

#4.2 Linkage Rules: Defaults & Field Linkage

Some fields should be auto-filled (e.g., Status defaults to "Pending"), while others need to change dynamically based on conditions (e.g., urgent tickets require a description). The default value feature in 2.0 is still evolving, so in this tutorial we'll use Linkage Rules for both default values and field linkage.

  1. Click the block settings icon (three-line icon) in the top-right corner of the Form block.
  2. Find "Linkage rules" — clicking it opens a configuration panel in the sidebar.

04-forms-and-details-2026-03-13-16-43-35

#Setting Default Values

Let's first set default values for "Status" and "Submitter":

  1. Click "Add linkage rule".
  2. Leave the condition empty — an unconditional linkage rule executes immediately when the form loads.

04-forms-and-details-2026-03-13-16-47-34

  1. Configure the Actions:
    • Status field -> Set default value -> Pending
    • Submitter field -> Set default value -> Current user

Important notes on setting values: Always select "Current form" as the data source first. For relation fields (like Category, Submitter, Assignee — any many-to-one field), you must select the object property itself, not its expanded sub-fields.

When selecting variables (like "Current user"), first single-click to select it, then double-click to fill it into the selection bar.

04-forms-and-details-2026-03-13-17-01-06

04-forms-and-details-2026-03-13-17-02-20

04-forms-and-details-2026-03-13-17-03-41

If you want a field to be non-editable by the submitter (e.g., Status), you can set its "Display mode" to "Readonly" in the field settings.

04-forms-and-details-2026-03-13-17-22-15

Three display modes: Editable, Readonly (editing disabled but field appearance preserved), and Easy-reading (displays as plain text only).

04-forms-and-details-2026-03-13-12-54-53

#Urgent Ticket Requires Description

Next, add a conditional linkage rule: when a user selects Priority as "Urgent", the Description field becomes required, reminding the submitter to clearly describe the situation.

  1. Click "Add linkage rule".

04-forms-and-details-2026-03-13-17-07-34

  1. Configure the rule:
    • Condition: Current form / Priority equals Urgent
    • Actions: Description field -> set to Required

04-forms-and-details-2026-03-13-17-08-46

04-forms-and-details-2026-03-13-17-18-16

  1. Save the rule.

Now test it: select Priority as "Urgent" and a red asterisk * will appear next to the Description field, indicating it's required. Select any other priority and it reverts to optional.

04-forms-and-details-2026-03-13-17-20-18

Finally, apply what we've learned and adjust the layout a bit.

04-forms-and-details-2026-03-13-17-25-55

What else can linkage rules do? Beyond setting defaults and controlling required status, they can also show/hide fields and dynamically assign values. For example: when Status is "Closed", hide the Assignee field. We'll explore more in later chapters as we encounter these scenarios.

#4.3 Details Block

In the last chapter, we added a "View" button to table rows that opens a Drawer. Now let's configure what goes inside the Drawer.

  1. In the table, click the "View" button on any row to open the Drawer.
  2. In the Drawer, click "Add block" -> Data blocks -> Details.
  3. Select "Current collection".

04-forms-and-details-2026-03-13-17-27-02

  1. In the Details block, click "Fields" with this layout:
AreaFields
TopTitle, Status (tag style)
Main bodyDescription (rich text area)
Side infoCategory name, Priority, Submitter, Assignee, Created at

How to add a large title? Select Fields > Markdown > Edit Markdown > in the editing area, select a variable > Current record > Title. This dynamically inserts the record's title into a Markdown block. Delete the default text and use Markdown syntax to make it a heading (add ## followed by a space before it).

04-forms-and-details-2026-03-13-17-36-26

04-forms-and-details-2026-03-13-17-39-51

Now the original Title field can be removed. Adjust the details layout:

04-forms-and-details-2026-03-13-17-43-36

Tip: You can drag multiple fields onto the same row for a more compact and visually appealing layout.

  1. In the Details block's "Actions", check the "Edit" button so users can jump straight from the details view into edit mode.

04-forms-and-details-2026-03-13-17-45-15

#Configuring the Edit Form

Click the "Edit" button and a new popup opens — it needs an edit form inside. The edit form has nearly the same fields as the "Add new" form. Do we really have to check all those fields again from scratch?

Nope. Let's save the "Add new" form as a template first, then the edit form can reference it directly.

Step 1: Go back to the "Add new" form and save as template

  1. Close the current drawer, go back to the ticket list, and click "Add new" to open the form.
  2. Click the block settings icon (three-line icon) at the top-right of the Form block, and find "Save as template".

04-forms-and-details-2026-03-13-17-47-21

  1. Click save — it defaults to "Reference". All forms referencing this template share the same configuration. Update one place and all stay in sync.

04-forms-and-details-2026-03-13-17-47-44

04-forms-and-details-2026-03-13-18-39-05

Since our ticket form isn't complex, "Reference" is simpler to maintain. If you choose "Duplicate", each form gets an independent copy that can be modified separately.

Step 2: Reference the template in the edit popup

  1. Go back to the details drawer or the table's row actions, and click the "Edit" button to open the edit popup.

You might think: just use "Add block -> Other blocks -> Block templates" to create the form, right? Try it and you'll find — this creates an "Add new" form, and the fields aren't actually populated. This is a common pitfall.

04-forms-and-details-2026-03-13-17-59-36

The correct approach:

  1. In the popup, click "Add block" -> Data blocks -> Form (Edit) to create an edit form block first.
  2. In the edit form, click "Fields" -> "Field templates", and select the template you saved earlier.
  3. All fields will be populated at once, matching the "Add new" form exactly.
  4. Don't forget to add a "Submit" action button so users can save their changes.

04-forms-and-details-2026-03-13-18-05-13

04-forms-and-details-2026-03-13-18-15-11

Want to add a field later? Just modify the template once — both the "Add new" and edit forms update automatically.

#Quick Editing: Change Data Without Opening a Popup

Besides popup editing, NocoBase also supports quick editing directly in the table — no popups needed, just hover and click.

There are two places to enable it:

  • Table block level: Click the Table block's block settings (three-line icon), find "Quick editing", and toggle it on. This enables quick editing for all fields in the table.
  • Individual field level: Click a column's field settings, find "Quick editing", and toggle it on per field.

04-forms-and-details-2026-03-13-18-20-07

Once enabled, hovering over a table cell reveals a small pencil icon. Click it to open an inline editor for that field — changes save automatically.

04-forms-and-details-2026-03-13-18-21-09

When is this useful? Quick editing is perfect for batch updates like changing status or assignee. For example, an admin browsing the ticket list can click the "Status" column to quickly change a ticket from "Pending" to "In Progress" without opening each one individually.

#4.4 Enabling Change History

One of the most important aspects of a ticket system: who changed what and when must be traceable. NocoBase has a built-in "Record History" plugin that automatically logs every data change.

#Configuring Change History

  1. Go to Settings -> Plugin manager and make sure the "Record History" plugin is enabled.

04-forms-and-details-2026-03-13-18-22-44

  1. Enter the plugin configuration page and click "Add collection", then select "Tickets".
  2. Choose which fields to track: Title, Status, Priority, Assignee, Description, etc.

04-forms-and-details-2026-03-13-18-25-11

Recommendation: You don't need to track every field. Fields like ID and Created at that are never manually changed don't need to be tracked. Only record changes to fields that matter for the business.

  1. Back in the settings, click "Sync history data snapshot". The plugin will automatically create an initial history record for all existing tickets. Every subsequent change will add a new history entry.

04-forms-and-details-2026-03-13-18-27-01

04-forms-and-details-2026-03-13-18-28-50

#Viewing History in the Details Page

  1. Go back to the ticket details Drawer (click the "View" button on a table row).
  2. In the Drawer, click "Add block" -> Record History.
  3. Select "Current collection" and choose "Current record" as the data source.
  4. A timeline will appear at the bottom of the details page, clearly showing every change: who changed which field from what value to what value, and when.

04-forms-and-details-2026-03-13-18-31-45

04-forms-and-details-2026-03-13-18-33-00

This way, even if a ticket passes through multiple people, every change is crystal clear.

#Summary

In this chapter, we completed the full data lifecycle:

  • Form — Users can submit new tickets with default values and validation
  • Linkage rules — Urgent tickets automatically require a description
  • Details block — Clearly displays a ticket's complete information
  • Change history — Automatically tracks every modification for worry-free auditing

From "visible" to "enterable" to "traceable" — our ticket system now has basic usability.