a9korn/formio-validator

Formio JSON schema validator for PHP

v1.0.3 2025-01-31 14:32 UTC

This package is auto-updated.

Last update: 2025-04-29 01:30:12 UTC


README

⚡ Quick setup

Install library

composer require a9korn/formio-validator

Script for test:

  • copy data-example/schema.json - to your-project directory
  • create file [script_name].php
<?php

use A9korn\FormioValidator\FormioBuilderValidator;

require __DIR__ . '/vendor/autoload.php';

$schema = file_get_contents(__DIR__ . '/data-example/schema-test.json');
$schema_array = json_decode($schema, true);

try {
    $validator = new FormioBuilderValidator($schema_array['components']);
    $errors = $validator->validateSchema();

    print_r($errors);
} catch (Exception $e) {
    print_r($e);
}

How to Create Custom Validator

Create custom class implements IFormValidator

<?php

namespace App;

use A9korn\FormioValidator\BaseValidator;
use A9korn\FormioValidator\IFormValidator;

class ButtonValidator extends BaseValidator implements IFormValidator
{
    protected array $requiredFields = ['key', 'type', 'input'];

    public function validate(array $component): array {
        $errors = parent::validate($component);

        return array_merge(
            $errors,
            $this->myValidator($component)
        );
    }

    public function myValidator(array $component): array {
        $errors = [];

        // TODO - validation logic

        return $errors;
    }
}

add custom validators array as argument

    $myValidators = [
        'button' => \App\ButtonValidator::class
    ];

    $validator = new FormioBuilderValidator($schema_array['components'], $myValidators);
    $errors = $validator->validateSchema();

or register custom validator

    $validator = new FormioBuilderValidator($schema_array['components']);
    $validator->registerValidator('button',\App\ButtonValidator::class);