formularios php con muuu (parte i de ii)

23 de agosto de 2009

Aunque suene a mugido de vaca española, "muuu" es una clase en PHP para facilitar a los programadores el desarrollo de formularios en PHP. Resulta muy pesado el escribir todo el código HTML del form, los campos, luego validarlos, repetir el campo si este no es correcto...

Para solucionar esto existe una librería libre llamada muuu que con dos funciones addField() y addRule() nos permite crear campos en nuestro formulario y lo más importante crear reglas que validen nuestro formulario. Para ver como funciona imaginemos que queremos una pagina PHP para validar a un usuario (una login.php). Con dos campos: nombre de usuario y contraseña. Como dos reglas, el nombre de usuario será una dirección de correo y la contraseña deberá tener más de 3 caracteres. Si no se cumple ninguna de estas reglas, el formulario no se procesa.

Lo primero que tenemos que hacer es cargar la librería, crear el formulario y añadir los campos que necesitamos (dos campos de texto y el botón de enviar):

   include_once("muuu-v0.5.class.php");
   $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'"));

Posteriormente debemos crear las reglas que deben cumplir nuestros campos. El usuario debe ser una dirección de correo electrónico y la contraseña debe tener más de 3 caracteres:
   $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) );

Una vez configurado nuestro formulario solo falta arrancarlo, imprimirlo en la Web y procesar el formulario si todos los campos han pasado las reglas:
   if ( $form->formSuccess() == true ) {
      //--- procesamos el formulario
   } else {
      //--- arrancamos el formulario
      $form->startForm();
      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();
   }

El próximo post veremos el código completo de login.php