Form designer
Design data-entry forms for each entity. The form designer is a visual builder where you arrange fields into sections and columns.
Layout structure
A form is organised as:
- Sections — collapsible groups with a name and icon
- Columns — each section can have 1-4 columns
- Fields — placed inside columns in order
Adding fields to a form
- Open the entity in PF Manage
- Click "Form Designer" in the toolbar
- Drag fields from the field palette (left sidebar) onto the canvas
- Arrange fields into sections and columns
- Click "Save Layout"
Field configuration in the form
Each field on the form can be customised:
| Setting | Description |
|---|---|
| Label override | Different label than the field definition |
| Help text | Instructional text shown below the field |
| Placeholder | Input placeholder text |
| Read-only | Field is visible but not editable |
| Hidden | Field is not shown (useful with UI Policies) |
| Required indicator | Show/hide the red asterisk |
| Width | How many columns the field spans within its section |
Conditional visibility
Two modes for showing/hiding fields based on other field values:
- Visual builder — select a trigger field and define rules (e.g., "Show
resolutionwhenstatusisclosed") - JSON-Logic — write complex conditions with nested logic (e.g., show a field when
countryisESANDamount> 1000)
Conditions are evaluated client-side (instant) and re-evaluated server-side on save (security).
Form rendering
Forms render in three contexts:
| Context | How | Description |
|---|---|---|
| Admin SPA | Built-in | Full React form with all features |
| Front-end block | [pfm/form] block | Embedded form on any page |
| Public/anonymous | [pfm/form] with public entity | Form for anonymous submissions with CAPTCHA |
Styling
Forms use CSS custom properties from your theme's theme.json for colours, fonts, and spacing. No inline styles. No !important. The .pfm-form CSS class scopes all form elements.