mzur / kirby-form
A form helper for Kirby-based websites, using the Post/Redirect/Get pattern.
Installs: 45 377
Dependents: 1
Suggesters: 0
Security: 0
Stars: 8
Watchers: 3
Forks: 8
Open Issues: 3
Type:kirby-plugin
Requires
- getkirby/composer-installer: ^1.2
- mzur/kirby-flash: ^2.0
Requires (Dev)
- getkirby/cms: ^3.0
- mzur/kirby-defuse-session: ^1.0
- phpunit/phpunit: ^9.0
This package is auto-updated.
Last update: 2024-10-19 14:28:08 UTC
README
This is a fork of jevets\kirby-form.
A helper library for working with Kirby forms, using the Post/Redirect/Get design pattern.
Quick Example
$form = new Form([ 'name' => [ 'rules' => ['required'], 'message' => ['Name is required'] ], 'phone' => [], ]); if ($form->validates()) { // Validation passed // Do something with the data }
Installation
Install with composer:
# Kirby 2 composer require mzur/kirby-form:^1.0 # Kirby 3 composer require mzur/kirby-form:^2.0
Basic Example
This example assumes you're using page controllers in Kirby and that your page's URI is /my-page
.
// site/templates/my-page.php <?php snippet('header') ?> <?php snippet('form-errors', ['form' => $form]) ?> <form method="POST"> <input name="name" value="<?= $form->old('name') ?>"> <input name="phone" value="<?= $form->old('phone') ?>"> <?= csrf_field() ?> <input type="submit" value="Submit"> </form> <?php snippet('footer') ?>
// site/snippets/form-errors.php <?php if (count($form->errors()) > 0): ?> <div class="alert alert-error"> <?php foreach ($form->errors() as $key => $errors): ?> <div><?= implode('<br>', $errors) ?></div> <?php endforeach ?> </div> <?php endif ?>
// site/controllers/my-page.php use Jevets\Kirby\Form; return function ($kirby) { // Initialize the Form $form = new Form([ 'name' => [ 'rules' => ['required'], 'message' => ['Name is required'] ], 'phone' => [], ]); // Process the form on POST requests if ($kirby->request()->is('POST')) { if ($form->validates()) { // Show a thanks page } else { // Redirect back to the GET form go('/my-page'); } } return compact('form'); };
Contributing
Feel free to send a pull request!
Issues/Bugs
Please use the GitHub issue tracker.