Enrutar aplicaciones con Phalcon PHP
Enrutar aplicaciones con Phalcon PHP

En este tutorial vamos a ver que pasos debemos seguir para crear nuestros formularios con la clase Form en Phalcon, en el anterior tutorial ya vimos como hacer un formulario de registro completamente validado, y creo qué es una buena práctica ya que nos ayuda a conocer más herramientas que nos proporciona este framework.

Ahora veremos como debemos hacer para crear nuestras propias clases, que éstas extiendan de la clase form, y poder cargarlas para que puedan ser utilizadas, es una cosa realmente interesante y creo que completamente necesaria para tener más soltura con Phalcon, un gran framework, que duda cabe.

Aparte de crear el formulario, lo bueno de ésto, es que podemos llevar a cabo todas las validaciones necesarias, de forma que nuestro modelo quedará completamente limpio, y, lo más importante, podemos utilizar nuestro formulario las veces que queramos donde queramos simplemente llamándolo, genial.

Crea tus formularios con la clase form en Phalcon

Lo primero que debes hacer es crear un nuevo proyecto si aún no lo has hecho, una vez lo tengas, crea una carpeta llamada formularios a la altura de controllers y models, dentro crea un archivo llamado LoginForm.php y añade el siguiente código.

Ya tenemos un formulario de login con los campos email y password y un campo oculto que contiene un token para prevenir ataques csrf, impresionante. ¿Y cómo lo utilizamos ahora? Buena pregunta…

Lo primero que debes hacer es abrir tu archivo app/config/config.php y en el array application añade el siguiente elemento, que le dirá a Phalcon donde estará nuestro directorio llamado formsDir.

Ya que estás aquí aprovecha para establecer los datos de tu conexión a la base de datos, ya que la utilizaremos.

Ahora abre el archivo loader.php del mismo directorio y añade la siguiente linea en el array donde registramos los directorios.

Con esta configuración tenemos suficiente para poder utilizar nuestro formulario, pero antes, crea las sesiones flash en el archivo services.php.

Ahora sólo necesitamos llamarlo desde nuestro controlador, así que abre el archivo indexController.php y modifica el código por el siguiente.

Espero que nos estemos dando cuenta de la potencia que nos ofrece la clase form en Phalcon, creo que es impresionante, y lo bueno es que es así con todo.

Con lo que hemos hecho en el controlador index ya podemos utilizar nuestro formulario en la vista index/index.volt, ya que en el tutorial anterior hicimos uso de un archivo .phtml, en este vamos a hacer el formulario con volt, así que ábrelo y modifica el código por el siguiente.

Se entiende a la perfección, creo que no hay nada que decir, por si tienes dudas, {{ content() }} lo que hace es mostrar toda la información que queramos mostrar desde el controlador, por ejemplo, los mensajes flash, para que te hagas una idea.

Para darle un poco más de gracia a nuestro formulario, abre el archivo index.volt que se encuentra en la raíz de la carpeta views y modifica el código por el siguiente.

De esta forma podremos utilizar los css de twitter bootstrap. Ahora mismo nuestro formulario no hace ni login ni nada, para que ésto empiece a funcionar, primero debemos crear la tabla users, así que importa el siguiente .sql a tu base de datos, el cuál tiene la tabla users con un par de registros que te serán útiles para hacer pruebas.

Ahora te toca crear el modelo users, ya que sino no podremos hacer nada con nuestro formulario, espero que recuerdes como hacerlo porqué no te lo voy a decir. Finalmente, abre el controlador index y haz qué quede con el siguiente aspecto.

Genial, simplemente comprobamos si el formulario pasa la validación, si no es así, mostramos los mensajes, si pasa la validación, obtenemos los datos del usuario por su email(findFirstByEmail), comprobamos si existe el usuario, si existe, ya que el password lo hemos guardado encriptado, no tenemos forma de saber si el que ha introducido en el formulario es el mismo, debemos hacer la comprobación de la siguiente forma.

Si el password es correcto, creará dos sesiones, una con el email del usuario y otra con su id y redirigirá a un supuesto controlador user que no existe, en otro caso mostrará otros mensajes.
 
Y eso es todo, te dejo a ti que crees el controlador users y que muestres los datos de sesión que se han creado, por cierto, los passwords para ambos usuarios es 123456, nada más, hasta la próxima.