1. Go to this page and download the library: Download oswa/formify-php library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
oswa / formify-php example snippets
use Oswa\FormifyPhp\FormifyPhp;
// Crear un nuevo formulario
$form = new FormifyPhp('POST', '/submit');
// Agregar campos
$form->addField('text', 'name', [
'label' => 'Nombre',
'essage', [
'label' => 'Mensaje',
'rows' => 5
]);
// Agregar botón de submit
$form->submitButton([
'text' => 'Enviar',
'class' => 'btn btn-primary'
]);
// O simplemente con string
$form->submitButton('Enviar');
// Renderizar el formulario
echo $form->render();
$form = new FormifyPhp('POST', '/submit');
// Personalizar el renderizado de labels para todos los campos
$form->setRenderLabel(function ($field) {
return sprintf(
'<label for="%s" class="font-bold text-blue-600">%s%s</label>',
$field['name'],
$field['label'],
$field['
$form = new FormifyPhp('POST', '/submit');
// Campo con diseño personalizado (input dentro del label)
$form->addField('email', 'email', [
'label' => 'Correo Electrónico',
'placeholder' => '[email protected]',
'="%s" name="%s" class="mt-1 block w-full" />' .
'</label>' .
'</div>',
htmlspecialchars($field['options']['label']),
$field['type'],
$field['name']
);
}
]);
$form->setFieldWrapper(function ($field) {
$html = '<div class="mb-6">' . PHP_EOL;
$html .= $field['label'];
$html .= $field['input'];
// 'error' es el mensaje en crudo; 'errorHtml' ya viene pasado por setRenderErrors()
if ($field['error']) {
$html .= sprintf('<p class="text-red-500 text-sm mt-1">%s</p>', $field['error']);
}
$html .= '</div>' . PHP_EOL;
return $html;
});
$form->addField('text', 'name', [
'label' => 'Nombre',
'rules' => ['if ($form->validate($form->request()->getPost())) {
// datos válidos
}
$form->getErrors(); // ['name' => 'El nombre debe tener al menos 3 caracteres.']
use Oswa\FormifyPhp\Validation\Validator;
$validator = Validator::make($data, [
'name' => ' => 'nullable|integer|between:18,120',
'items.*.sku' => ' // MessageBag
$validator->errors()->first('email');
$validator->validated(); // solo los campos con reglas que pasaron
$validator->validate(); // devuelve los datos validados o lanza ValidationException
// Con un closure, igual que en Laravel
$validator = Validator::make($data, [
'sku' => [function (string $attribute, mixed $value, Closure $fail) {
if (!str_starts_with($value, 'SKU-')) {
$fail('El campo :attribute debe empezar por SKU-.');
}
}],
]);
// O registrando una regla reutilizable
$validator->extend('par', fn($attribute, $value) => $value % 2 === 0, 'El campo :attribute debe ser par.');
use Oswa\FormifyPhp\Validation\Translator;
// Cambiar el idioma de todo el formulario
$form->setLocale('es');
// O directamente sobre el validador
$validator = Validator::make($data, $rules, [], [], new Translator('es'));
// Registrar o sobrescribir mensajes de cualquier idioma
$translator = new Translator('fr');
$translator->addMessages('fr', [
'validation' => [
'
session_start(); // o deja que la librería la inicie al renderizar
$form = new FormifyPhp('POST', '/submit');
$form->addField('email', 'email', ['label' => 'Email', 'rules' => ['do');
}
if ($form->validate($form->request()->getPost())) {
// Datos válidos: guardar, enviar email, redirigir...
}
}
echo $form->render(); // el <input type="hidden" name="csrf_token"> ya viene incluido
$form->disableCsrf(); // desactivar la protección
$form->antiCsrf()->setTokenName('_token'); // cambiar el nombre del campo
$form->antiCsrf()->regenerateToken(); // forzar un token nuevo