This is a fork of jevets\kirby-form.
A helper library for working with Kirby forms, using the Post/Redirect/Get design pattern.
$form = new Form([
'name' => [
'rules' => ['required'],
'message' => ['Name is required']
],
'phone' => [],
]);
if ($form->validates()) {
// Validation passed
// Do something with the data
}
Install with composer:
# Kirby 2
composer require mzur/kirby-form:^1.0
# Kirby 3
composer require mzur/kirby-form:^2.0
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');
};
Feel free to send a pull request!
Please use the GitHub issue tracker.