No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Formulario de login con ActiveForm

25/35
Recursos

¿Cómo crear un controlador y una vista en Smarty para gestionar formularios?

Crear formularios en proyectos web puede ser una tarea complicada, pero gracias a las herramientas y frameworks adecuados, este proceso se simplifica notablemente. En este apartado, se incluye una guía paso a paso para manejar controladores y vistas utilizando Smarty y widgets. Es vital recordar que cada etapa es crucial para lograr que el formulario no solo funcione, sino también para que sea atractivo y fácil de usar.

¿Cómo implementar un formulario básico con Active Form?

Un formulario necesita tener, al menos, campos para recogida de datos y un botón de envío. Utilizar Active Form a través de Smarty hace que la implementación sea más sencilla y eficaz.

<!-- Llamamos a la clase Active Form -->
{use class="G.widgets.ActiveForm" type="block"}

<!-- Se crea el formulario con el ID `new_user` -->
{$form | ActiveForm id="new_user" assign="form"}

<!-- Campo de texto para el nombre de usuario -->
{$form->field('user', 'username')}

<!-- Campo para la contraseña, con entrada oculta -->
{$form->field('user', 'password')->input('password')}

<!-- Campo para repetir la contraseña, como retrospectiva y para validación -->
{$form->field('user', 'password_repeat')->input('password')}

<!-- Biografía del usuario, como un textarea -->
{$form->field('user', 'bio')->textarea()}

<!-- Botón para enviar el formulario -->
<input type="submit" value="Guardar">

El código muestra cómo establecer un formulario con campos para el nombre de usuario, contraseña, repetición de contraseña (para validación futura) y biografía con un textarea.

¿Cómo gestionar los datos del formulario en el servidor?

Una parte clave es cómo manejar eficientemente los datos que se obtienen del formulario. En el script, podemos observar que al crear un nuevo controlador para el usuario, los datos son capturados y procesados. Esto se hace utilizando la lógica de negocio que corresponde al controlador, y se simplifica el proceso usando Active Form en las vistas.

Adicionalmente, al implementar la validación en futuros pasos, se asegura la integridad de los datos y se protege el sistema, ya que errores como el ingreso de contraseñas incorrectas con el campo password_repeat son capturados antes de proceder al almacenamiento de la base de datos.

¿Cómo asegurar que el formulario solo se pueda usar sin estar logueado?

Algo importante que agregar es la validación de usuario. El formulario no debería estar disponible para usuarios autenticados, pues estos no deberían crear múltiples cuentas. Para ello, se implementa una lógica dentro del controlador:

if (!G.App.User.isGuest()) {
    G.App.Session.setFlash('warning', 'No puedes crear usuario estando logueado.');
    return this.goHome();
}

Esta condición revisa si un usuario está logueado antes de permitirle el acceso a la creación de una nueva cuenta. Si el usuario está logueado, recibe un mensaje de alerta y es redirigido a la página principal, asegurando así que las funciones del formulario se mantengan adecuadamente restringidas a los visitantes.

¿Qué sigue después de crear un formulario básico?

Con el controlador y la vista en marcha, el siguiente paso es gestionar las validaciones y reglas de negocio. Es crucial implementar un sistema donde se verifique que:

  • El nombre de usuario es único.
  • Las contraseñas coinciden.
  • Los datos cumplen con ciertos criterios de validación.
  • Los permisos de guardado de datos están correctamente configurados.

Además, la implementación de estas funcionalidades garantizará que las acciones del usuario se procesen, almacenen y utilicen de manera adecuada. ¡Continúa aprendiendo y expandiendo tus habilidades! Cada paso que des te acerca más al dominio completo del desarrollo con Smarty.

Aportes 1

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Este widget ActiveForm es practico para crear rapidamente un formulario con sus elementos. Me trae recuerdos del pasado, en el framework (cuyo nombre no dire, pero que tenemos como referencia) existia algo llamado laravelcollective Usaba el mismo concepto para crear formulario y sus elementos: ```js Form::label('email', 'E-Mail Address'); Form::submit('Guardar'); ``` Lo dejaron de usar varias versiones atras no se la razon, pero recuerdo que cuando se le querian poner estilos (Para ajustarlo a una UI especifica y tener una buena UX) era un dolor de cabeza.