Validação de Formulários

Validação de Formulários

Classe FormValidation com suporte a validação client-side via AJAX. Digite nos campos para validar em tempo real.

Testar Validação

Regras Aplicadas

CampoRegras
namerequiredmin:3
emailrequiredemail
agerequiredint

Eventos ao Vivo

  • input — valida ao digitar (com debounce 250ms)
  • blur — valida ao sair do campo
  • submit — valida todos os campos via AJAX

Exemplo de Código

Controller

<?php

use Blumiga\formvalidation\FormValidation;

$v = new FormValidation();
$v->rules([
    'name'  => 'required|min:3',
    'email' => 'required|email',
    'age'   => 'required|int',
]);

if (requestPOST()) {
    $isAjax = ($_SERVER['HTTP_X_REQUESTED_WITH'] ?? '') === 'XMLHttpRequest';

    if ($isAjax) {
        if (inputPOST('_formvalidation_field')) {
            $v->check(inputPOST('_formvalidation_field'));
        } elseif ($v->validate()) {
            json(['success' => 'OK!']);
        } else {
            json(['errors' => $v->errors()]);
        }
        return;
    }

    if (!csrf_verify()) {
        flash_set('error', 'CSRF inválido.');
        redirect('/validation');
    }

    if ($v->validate()) {
        flash_set('success', 'OK!');
    }
}

View

<?= FormValidation::form('POST', '/validation') ?>
    <?= csrf_field() ?>

    <input name="nome" formvalidation-live="input">
    <?= FormValidation::dataError('fv-error', 'nome') ?>

    <button type="submit">Validar</button>
<?= FormValidation::endForm() ?>

<?= FormValidation::dataSuccess('fv-success') ?>
<?= FormValidation::scripts() ?>