formularios php con muuu (parte ii de ii)

24 de agosto de 2009

muu posee diferentes tipos de datos que podrán utilizarse dentro de la función addField(). Estos pueden ser: text, textarea, password, select, radio o checkbox. Como vemos representan las estrucutas típicas de un formulario HTML.

Estos son algunos ejemplos:

$form->addField("text", "fecha", "Fecha de compra", array("instructions"=>"En 
       formato dd/mm/aaaa"));
$form->addField("checkbox", "vehiculo", "¿Qué vehiculo tienes?", 
       array("checkbixValues"=>array("moto"=>"Motocicleta","coche"=>"coche")));
$form->addField("select", "colores", "Seleccione un color", 
       array("selectValues"=>array("rojo"=>"Rojo","Azul"=>"Azul")));
$form->addField("radio", "sexo", "Sexo", 
       array("radioValues"=>array("hombre"=>"Hombre","mujer"=>"mujer")));
$form->addField("textarea", "opinion", "Su opinion");

Por otro lado, tambien tenemos un montón de tipos de reglas de validación. Veamos las más importantes:

- required: el campo no puede estar vacio.
- email: el campo debe ser una dirección de correo.
- emailorblank: el campo debe ser una dirección de correo o estar en blanco.
- rangelength: la longitud del campo debe estar dentro de un minlength y un maxlength
- equal: el valor del campo debe ser igual a otro valor
- lettersonly: el valor del campo debe tener solo letras
- aphanumeric: el valor del campo contiene letras y numeros
- numeric: el valor del campo contiene solo numeros
- maxvalue: el valor del campo no puede ser mayor del maxvalue
- minvalue: el valor del campo debe ser mayor que el minvalue
- float: el valor del campo debe ser un numero real
- integer: el valor del campo debe ser un numero entero
- ip: el valor del campo debe ser una dirección IP
- url: el valor del campo debe ser una dirección URL
- date: el valor del campo debe contener una fecha en formato dd/mm/aaaa.

Existen otras más y por si aun no se nos satisface nuestras necesidades siempre podemos utilizar la opción de regla "regex" que nos permite crear nuestra propia expresión regular para satisfacer nuestra propia regla de filtrado.

Veamos algunos ejemplos de estas reglas:
$form->addRule("required", "apellido", "El apellido no puede estar en blanco");
$form->addRule("date", "fecha_compra", "La fecha de compra no es correcta");
$form->addRule("rangelength", "password" , "La contraseña debe tener más de 3 
               caracteres", array("minlength"=>4,"maxlength"=>256) );
$form->addRule("equals", "clave", "Contraseñas diferentes", array("equalfield"=>"clave2"));

Para finalizar y una vez comprendido cómo funciona muuu, este es el código completo de una pagina de login desarrollada utilizando las librerías de muuu:
<?php
   include_once("muuu-v0.5.class.php");
   
   //--- campos de mi formulario
   $form= new muuu("form", "post", "login.php");
   $form->addField("text", "login", "Usuario: ", array("instructions"=>"(utiliza tú 
                   dirección de correo)") );
   $form->addField("password", "password", "Contraseña: ");
   $form->addField("submit", "boton", "", array("fieldAdd"=>"value='Enviar'"));

   //--- reglas de mi formulario
   $form->addRule("email", "login", "El nombre de usuario tiene que ser una 
                  direccion de correo válida.");
   $form->addRule("rangelength", "password" , "La contraseña debe tener más de 3 
                  caracteres", array("minlength"=>4,"maxlength"=>256) );
   
   if ( $form->formSuccess() == true ) {
      //--- procesamos los datos del formulario. En este caso se trata de una validación de usuario
      if ( $form->formValue("login")=="usuario@miempresa.com" &&
           $form->formValue("password")=="12345" )
         echo "Ok, estas dentro";
      else
         echo "Este usuario no es correcto";      
   } else {
      //--- arrancamos el formulario
      $form->startForm();
      echo "<fieldset>";
      echo "<legend>Inicio</legend>";
      //--- imprimimos el formulario
      foreach ( $form->fieldsarray as $key=>$value ) {
         echo "<p><label for='$key'>" . $form->labelsarray[$key] . "</label>$value</p>";
         echo "<p id='instructions'>" . $form->instructionsarray[$key] . "</p>";
         echo "<p id='error'>" . $form->errorarray[$key] . "</p>";   
      }
      echo "</fieldset>";
      $form->endForm();
   }
?>