# llimphi-widget-form *Read this in English: [README.md](README.md).* Validación de formularios sobre `llimphi-widget-field`. Un formulario valida en tres tiempos, y el que se hace mal es el tercero: 1. **qué se pide** — las reglas por campo (`Regla`, `CampoDef`); 2. **qué está mal** — la agregación (`Formulario::validar` → `Errores`), que junta **todos** los problemas y no sólo el primero; 3. **cuándo se dice** — `EstadoForm`. Un formulario que grita «obligatorio» contra un campo vacío que todavía no tocaste es hostil, y uno que se guarda el error hasta el submit te hace ir y volver. La regla: se muestra al **salir** del campo (`tocar`) o al **intentar enviar** (`enviar`), nunca mientras se escribe por primera vez. Es lógica pura más dos vistas de pegamento. Los valores siguen viviendo en el `Model` del caller: acá no hay un `Form` con buffers adentro, porque eso obligaría a sincronizar dos fuentes de verdad. `campo_view` saca del formulario la etiqueta, el asterisco de obligatorio y el error, así esos tres datos dejan de escribirse dos veces —que es como terminan diciendo cosas distintas—. `resumen_errores_view` arma el resumen navegable de la cabecera: en un formulario largo el error puede estar fuera de pantalla, y lo único que se ve es que el botón no hizo nada. --- Parte de **llimphi** — ver [llimphi](../../LEEME.md).