Skip to content
A form helper for Kirby CMS based websites and apps, using the Post/Redirect/Get pattern.
Branch: master
Clone or download
Pull request Compare This branch is 34 commits ahead, 1 commit behind jevets:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
tests
.editorconfig Set up tests and do some minor refactoring Feb 5, 2017
.gitignore
.travis.yml
LICENSE Set up tests and do some minor refactoring Feb 5, 2017
README.md
composer.json
phpunit.xml Set up tests and do some minor refactoring Feb 5, 2017

README.md

Kirby Form

Build Status

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.

You can’t perform that action at this time.