arnoson/kirby-forms

Form builder and handler for Kirby 3

Installs: 302

Dependents: 0

Suggesters: 0

Security: 0

Stars: 10

Watchers: 4

Forks: 3

Open Issues: 4

Type:kirby-plugin

0.3.3 2024-10-09 11:31 UTC

This package is auto-updated.

Last update: 2024-11-09 19:05:59 UTC


README

Kirby Forms

A flexible form builder and handler based on Kirby's layout and block fields and Kirby Uniform.

Features

  • 🎨 Form builder using Kirby's built-in layout and blocks fields
  • 🔒 Form handling using Kirby Uniform
  • ✔️ Client-side and server-side validation
  • 📋 View entries directly in the panel
  • 📬 Send confirmation and notification emails
  • 🔗 Use Post/Redirect/Get pattern to avoid multiple submission

Demo

kirby-forms-demo.mp4

Installation

Make sure you have Kirby Uniform installed, then install the plugin using Composer:

composer require arnoson/kirby-forms

Getting started

The quickest way to get started is creating a new page with the form blueprint provided by the plugin. Now you can build your form in the panel. To render the form, use the form snippet inside your template:

snippet('form');

Options

Most options (success message, confirmation emails, ...) can be configured per form direcly in the panel in the form's Settings tab.

These global options can only be set in the plugin's config:

'arnoson.kirby-forms' => [
  // A list of email addresses that can be selected in the panel as the sender
  // of confirmation and notification emails.
  'fromEmails' => [],

  // Wether or not to use client validation (in addition to server-side
  // validation done by Kirby Uniform).
  'clientValidation' => true,

  // How many columns to use for the grid that determines the layout of the
  // form. see: https://getkirby.com/docs/reference/panel/fields/layout#calculate-the-column-span-value
  'gridColumns' => 12,

  // Wether or not to use the `autocomplete` attribute for the form element.
  'autoComplete' => false,
]

Entries

Form entries will be saved directly in the form page and can be viewed/deleted/edited in the panel:

screely-1728499707485

Using Different Layouts

By creating your own fields/form-fields blueprint, you can overwrite the possible layouts in the form builder. Use this file as a starting point.

Adding Custom Fields

The easiest way to add your own custom fields is to start with the example.

Custom fields consist of

  • A block blueprint (defining the field settings like required, min, max, ...)
  • A block snippet (to render the fields on the form)

The block name must follow the naming convention of form-field-<panel-field-name>, where <panel-field-name> is a panel field, used to render the field's value in the Entries view.

Ideally, a custom field should also have a block preview.

To show your custom field as an option in the Kirby Forms form builder, you have to override the fields/form-fields blueprint, see the example.

Contribute

Contributions to the plugin and it's documentation are welcome :~) Please make sure you:

  • use prettier to format your code (should happen automatically if you work on this project in VSCode)
  • use conventional commits (these are used to automatically generate release messages, including credits for your contributions)

To get started have a look at the package.json.