Validando formulario con jquery

De KumbiaPHP Framework Wiki

Esta es una practica muy sencilla que consiste en usar jQuery para validar los campos de un formulario.

Descargamos el jQuery Validate jQuery plugin: Validation

Esto vendra con muchos archivos javascript y una carpeta demo donde puede apreciarse desde un archivo index.html lo que hace este validador de campos de formulario.

Para adaptarlo a KumbiaPHP Framework solo vamos a colocar algunos archivos en su lugar y realizar un formulario para apreciar su accion. Vamos a crearnos una carpeta llamada jquery-validate en nuestra carpeta javascript del framework para tener ordenado los archivos relacionados a esta accion a usar en un formulario, lo cual quedaria asi: mi_app/public/javascript/jquery-validate/


Copia los siguientes archivos:

/jquery-validate/lib/jquery-1.4.2.js --> mi_app/public/javascript/jquery-validate/jquery-1.4.2.js

/jquery-validate/jquery.validate.js --> mi_app/public/javascript/jquery-validate/jquery.validate.js


En esta practica no realizaremos ninguna interaccion con ninguna base de datos, por lo que no habra modelos.

Colocamos el siguiente codigo en el Template, que para esta practica, es en el default de kumbiaPHP. Este codigo javascript iria obviamente en la seccion <head>. Hacemos un Partial para cargar en el <head> el codigo javascript que nos dara la funcionalidad de validacion de formulario que estamos buscando y que se demostrara en esta practica.

Este partial lo hemos colocado directamente en la raiz mi_app/views/partials/validacion.phtml

Partial: validacion.phtml

<script language="javascript">
    $(document).ready(function() {
      $("#formulario").validate({
        rules: {
          nombre: {
            required: true,
            minlength: 5
          },
          usuario: {
            required: true,
            minlength: 4
          },
          clave: {
            required: true,
            minlength: 5
          },
          confirmarclave: {
            required: true,
            minlength: 5,
            equalTo: "#clave"
          },
          correo: {
            required: true,
            email: true
          },
          confirmarcorreo: {
            required: true,
            email: true,
            equalTo: "#correo"
          },
       },
       messages: {
    	 nombre: {
            required: "Por favor, ingresa tu Nombre y Apellido.",
            minlength: "Este campo debe ser de al menos 5 caracteres."
         },
         usuario: {
            required: "Por favor, ingresa tu nombre de usuario.",
            minlength: "Tu nombre de usuario debe ser de al menos 4 caracteres o mas."
         },
         clave: {
            required: "Por favor, ingresa una clave de usuario.",
            minlength: "Tu clave debe ser de al menos 5 caracteres de longitud o mas."
         },
         confirmarclave: {
            required: "Por favor, vuelve a indicar tu clave.",
            minlength: "Tu clave debe ser de al menos 5 caracteres de longitud o mas.",
            equalTo: "No coincide con tu clave, por favor, verifica."
         },
         correo: "Por favor, ingresa un correo valido.",
         confirmarcorreo: {
            required: "Por favor, ingresa un correo valido.",
            equalTo: "No coincide con tu correo, por favor, verifica."
         },
      }
     });
    });
</script>

Colocamos el partial en la seccion <head> de la Plantilla:

<?php View::partial('validacion') ?>

No olvides llamar a los archivos javascript del validate de jquery y para esta practica, tambien un CSS llamado formulario.css, que seria:

<?php echo stylesheet_link_tag('formulario') ?>
<?php
        echo javascript_include_tag('jquery-validate/jquery');
        echo javascript_include_tag('jquery-validate/jquery.validate');
?>

Ahora realizaremos un formulario con algunos campos (algunos los validaremos y otros no). Creamos una carpeta llamada "usuarios" y una vista llamada registro.phtml quedando de esta forma: mi_app/views/usuarios/registro.phtml

La Vista: registro.phtml

<?php echo form_remote_tag('usuarios/registro','id: formulario'); ?>
<div id="formulario_reg">
    <h2>Datos Personales</h2>
    <div class="etiqueta-form">Nombre:</div>
    <div class="texto-form"><?php echo text_field_tag('nombre','class: texto','size: 20'); ?></div>
    
    <div class="etiqueta">Telefono Hab:</div>
    <div class="texto-form"><?php echo text_field_tag('telefhab','class: texto','size: 10'); ?></div>
    
    <div class="etiqueta">Telefono Movil:</div>
    <div class="texto-form"><?php echo text_field_tag('telefmovil','class: texto','size: 10'); ?></div>
    
    <div class="etiqueta">Fax:</div>
    <div class="texto-form"><?php echo text_field_tag('fax','class: texto','size: 10'); ?></div>
    
    <div class="etiqueta">Direccion:</div>
    <div class="texto-form"><?php echo textarea_tag('direccion','class: texto-largo','rows: 5','cols: 38'); ?></div>
    
    <h2>Datos de Usuario</h2>
    <div class="etiqueta">Usuario:</div>
    <div class="texto-form"><?php echo text_field_tag('usuario','class: texto'); ?></div>
    
    <div class="etiqueta">Password:</div>
    <div class="texto-form"><?php echo password_field_tag('clave','class: texto','id: clave','size: 10'); ?></div>
    
    <div class="etiqueta">Confirm.Password:</div>
     <div class="texto-form"><?php echo password_field_tag('confirmarclave','class: texto','size: 10'); ?></div>
     
    <div class="etiqueta">Correo:</div>
    <div class="texto-form"><?php echo text_field_tag('correo','class: texto','id: email','size: 20'); ?></div>
    
    <div class="etiqueta">Confirm.Correo:</div>
    <div class="texto-form"><?php echo text_field_tag('confirmarcorreo','class: texto','size: 20'); ?></div>
    
    <div class="etiqueta">Pregunta Secreta:</div>
    <div class="texto-form"><?php echo text_field_tag('pregunta','class: texto','size: 50'); ?></div>
    
    <div class="etiqueta">Respuesta:</div>
    <div class="texto-form"><?php echo text_field_tag('respuesta','class: texto','size: 50'); ?></div>
    
    <?php echo submit_tag('Enviar','class: boton'); ?>
</div>
<?php echo end_form_tag(); ?>

Algunos campos como Telefonos, Fax, direccion y pregunta secreta no seran validados, solo campos como usuario, password, correo.

Un pequeno CSS para modificar un poco el cuerpo del formulario: formulario.css

body
{
	font-size	: 65.2%
}

label
{ 
	display		: inline-block; 
	width		: 7em; 
}
	
label.error
{ 
	color		: red; 
	margin-left	: 0.5em; 
	width		: 20em; 
}

h2
{
	margin		: 20px auto 10px auto;
}

#formulario_reg
{
	margin		: 10px 0 10px 50px; 
}

Eso es todo, solo queda cargar la vista del ejemplo: http://localhost/mi_ubicacion_de_kumbiaphp/app_validacion_formulario/usuarios/registro/

Enjoy!

Descarga este ejemplo

Descarga: app_validacion_formulario para el core del beta1. .