Download the PHP package oswa/formify-php without Composer
On this page you can find all versions of the php package oswa/formify-php. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download oswa/formify-php
More information about oswa/formify-php
Files in oswa/formify-php
Package formify-php
Short Description A flexible and easy-to-use PHP form builder library
License MIT
Homepage https://github.com/oswaldohuillca/formify-php
Informations about the package formify-php
FormifyPhp
Una librería flexible y fácil de usar para construir formularios HTML en PHP.
Instalación
Puedes instalar el paquete via Composer:
Uso
Uso Básico
Personalización Global de Labels
Puedes customizar cómo se renderizan todos los labels del formulario:
Personalización por Campo Individual
Cada campo puede tener su propio renderizado completamente personalizado usando customRenderer dentro de las opciones:
Wrapper Personalizado para Campos
Define cómo se envuelve cada campo globalmente:
Ejemplo con Tailwind CSS
Manejo de Errores
Tipos de Campo
Cualquier tipo de input HTML5 (text, email, tel, url, password, number, date,
range, color…), más textarea, select, checkbox, radio y file.
Atributos HTML. Toda clave de options que no sea de la librería se emite como atributo,
así que min, max, step, accept, pattern o autocomplete funcionan sin más. Para
nombres que chocan con claves reservadas, o para data-* y aria-*, usa attributes:
Las claves reservadas son: label, options, choices, value, checked, inline,
groupClass, choiceClass, attributes, text y meta. Usa meta para tus propios
datos (textos de ayuda, clases del wrapper…): llega a los renderizadores pero nunca al HTML.
Checkbox y radio. Con choices se genera un grupo; sin él, un checkbox suelto:
Cada opción del grupo recibe su propio id (plan_pro) y su <label for>. Puedes darles
clases con groupClass (el contenedor) y choiceClass (cada opción).
Grupos obligatorios. No pongas
'required' => trueen un grupo de checkboxes: el atributo se emitiría en cada casilla y en HTML eso obliga a marcarlas todas. Basta con la reglarequired, que ya marca el campo como obligatorio en el label. En los grupos de radios sí puedes usarlo, porque el navegador lo interpreta sobre el grupo entero.
Campos obligatorios. El label muestra el campo como obligatorio si lleva el atributo
required o si alguna regla lo exige (required, accepted), así que no hace falta
declararlo dos veces. Las condicionales (required_if, required_with…) no cuentan,
porque dependen de otros campos. Puedes consultarlo con $form->isRequired('campo').
Select múltiple y archivos. Con multiple, el name pasa a campo[] automáticamente,
y un campo file añade enctype="multipart/form-data" al formulario:
Las reglas de validación de archivos (
file,image,mimes,dimensions) no están incluidas: el campo se renderiza, pero valida su contenido por tu cuenta.
Validación
Las reglas se declaran junto al campo y usan la misma sintaxis que Laravel:
El validador también se puede usar por separado, con la API de Illuminate\Validation\Validator:
Soporta notación de puntos (user.email), comodines (items.*.sku), los modificadores
nullable, sometimes y bail, mensajes personalizados por campo o por regla, nombres
legibles de campos, stopOnFirstFailure() y sometimes().
Reglas incluidas: accepted, accepted_if, active_url, after, after_or_equal,
alpha, alpha_dash, alpha_num, array, before, before_or_equal, between,
boolean, confirmed, date, date_equals, date_format, declined, different,
digits, digits_between, distinct, doesnt_end_with, doesnt_start_with, email,
ends_with, filled, gt, gte, in, in_array, integer, ip, ipv4, ipv6,
json, lowercase, lt, lte, mac_address, max, min, not_in, not_regex,
numeric, present, prohibited, regex, required, required_if, required_unless,
required_with, required_with_all, required_without, required_without_all, same,
size, starts_with, string, timezone, uppercase, url, uuid.
No se incluyen las reglas que dependen de una base de datos (exists, unique) ni de
archivos subidos (file, image, mimes, dimensions).
Reglas propias
Idiomas
Los mensajes por defecto están en inglés. También viene incluido el español, y
puedes registrar cualquier otro idioma. Las claves son las mismas que usa Laravel, así
que puedes reutilizar un lang/es/validation.php existente:
Protección CSRF
Los formularios que no usan GET incluyen automáticamente un token CSRF oculto. El token
se genera con random_bytes(), se guarda en la sesión y se compara con hash_equals().
El token se rota tras cada verificación correcta. Puedes ajustar el comportamiento:
Uso fuera de una petición HTTP
Request y AntiCsrf se construyen solo cuando se usan, así que puedes generar
formularios en tests o en CLI. Para simular una petición, inyéctala:
Características
- ✅ Cero dependencias de terceros — solo PHP y sus extensiones estándar
- ✅ Constructor de formularios fluido y encadenable
- ✅ Validación con la API de Laravel: misma sintaxis de reglas, notación de puntos y comodines
- ✅ Protección CSRF integrada, sin dependencias HTTP externas
- ✅ Mensajes en inglés por defecto, con español incluido y ampliable a cualquier idioma
- ✅ Soporte para todos los tipos de campos HTML5, incluidos checkbox, radio y file
- ✅ Atributos HTML libres (
min,max,step,accept,data-*,aria-*) - ✅ Renderizado personalizable a nivel global y por campo
- ✅ Labels personalizables - puedes poner el input dentro del label o cualquier diseño
- ✅ Wrapper personalizable para controlar cómo se envuelve cada campo
- ✅ customRenderer en options - API limpia y consistente
- ✅ Compatible con Tailwind CSS, Bootstrap y cualquier framework CSS
- ✅ Validación de campos y mensajes de error
- ✅ Clases CSS completamente personalizables
- ✅ Botones de submit con atributos y renderers personalizados
Requisitos
- PHP 8.1 o superior
ext-session(solo si usas la protección CSRF)
Testing
Los tests están escritos con Pest:
O ejecutar Pest directamente:
Changelog
Por favor ver CHANGELOG para más información sobre cambios recientes.
Contribuir
Las contribuciones son bienvenidas. Por favor ver CONTRIBUTING para más detalles.
Seguridad
Si descubres algún problema de seguridad, por favor envía un email a [email protected].
Créditos
Licencia
La licencia MIT (MIT). Por favor ver License File para más información.
All versions of formify-php with dependencies
illuminate/validation Version ^12.43
illuminate/translation Version ^12.43
aplus/http Version ^4.5