mrcremita / form-normalizer
Normalizes and validates form data: emails, names, DNI and more.
Requires
- php: >=8.1
- symfony/framework-bundle: ^5.0 || ^6.0
Requires (Dev)
- phpunit/phpunit: ^10.5
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');