mrcremita/form-normalizer

Normalizes and validates form data: emails, names, DNI and more.

dev-main 2025-04-13 12:23 UTC

This package is not auto-updated.

Last update: 2025-06-23 09:38:30 UTC


README

This package provides a solution to normalize and validate form data such as emails, names, Dni's, among others, in a simple and extensible way.

🆙 Installation

Install form-normalizer with composer:

  composer require mrcremita/form-normalizer

✅ Normalizers Available

EmaiNormalizer: Normalizes and validates emails.

NameNormalizer: Normalizes names (capitalizes correctly).

DniValidator: Validates and normalizes Spanish DNI numbers.

More updates and features coming soon!

💻 Usage/Examples

use Normalizers\EmailNormalizer;
use Normalizers\NameNormalizer;
use Validators\DniValidator;
use Normalizers\NormalizeFormFromArray;

// Individual data normalization
$email = "  ExAmPlE@DOMAIN.CoM  ";
$normalizedEmail = EmailNormalizer::normalize($email);
echo $normalizedEmail;  // Output: example@domain.com

$name = "  jAvI gArCíA  ";
$normalizedName = NameNormalizer::normalize($name);
echo $normalizedName;  // Output: Javi García

$dni = "12345678A";
$isValidDni = DniValidator::isValid($dni);
echo $isValidDni ? "Valid DNI" : "Invalid DNI";  // Output: Valid DNI

// Normalization of multiple data via an array
$data = [
    'email' => "  ExAmPlE@DOMAIN.CoM  ",
    'name' => "  jAvI gArCíA  ",
    'dni' => "12345678A"
];

$normalizedData = NormalizeFormFromArray::normalize($data);

echo $normalizedData['email']; // Output: example@domain.com
echo $normalizedData['name']; // Output: Javi García
echo $normalizedData['dni']; // Output: Valid DNI (or "Invalid DNI" if the DNI is invalid)

🧬 Symfony Integration

1.Make sure you have installed the package in your Symfony project using Composer.
For installation details, see the Installation section.

2.Register normalizers as services:

services:
    Normalizers\EmailNormalizer: ~
    Normalizers\NameNormalizer: ~
    Validators\DniValidator: ~

3.Example of use in Controller:

Form Controller

    if ($request->isMethod('POST')) {
        $formData = $request->request->all();
        $normalizedData = NormalizeFormFromArray::normalize($formData);
    
        $command = FormadorCommand::fromRequest($request, $normalizedData);
        $this->handleCommand($command);

        return $this->redirectToRoute('detail_session', ['idSession' => 57789]);
    }

    return $this->render('your_template.html.twig');

👤 Author