Ejercicio 3. Alta de un usuario en varios pasos en CakePHP 1.1: ¿desmontando el patrón MVC?

Este post no tiene como objetivo criticar el patrón MVC, ni los frameworks que lo implementan, como CakePHP, Symfony, o Zend Framework -entre otros muchos que puedes ver aquí-. Intentamos profundizar un poco en algunos aspectos del MVC y en algunas características de CakePHP.

Este ejercicio es un poco diferente a los anteriores. Me gustaría poder hacerlo, pero no sé, así que queda para otra persona con más experiencia. El planteamiento es muy sencillo: se trata de dar de alta a un usuario en varios pasos de forma que las vistas envíen los datos por POST no a sus acciones asociadas (las que tienen el mismo nombre que las vistas), sino a las siguientes en la secuencia. Todo esto se lleva a cabo validando los datos y utilizando el ayudante HTML tagErrorMsg.

Concretando lo anterior, el usuario se da de alta en tres pantallas: primera_pantalla.thtml, segunda_pantalla.thtml y tercera_pantalla.thtml. Sucede que primera_pantalla.thtml envía su $data a la acción segunda_pantalla, y segunda_pantalla.thtml lo envía a la acción tercera_pantalla -estas acciones se definen en la clase UsuariosController-. Tercera_pantalla.thtml no pide ningún dato al usuario; muestra lo que ha introducido en las pantallas anteriores y presenta un botón “Guardar todos los datos”.

La vista primera_pantalla.thtml empieza así:

<h2>Alta de usuario</h2>
<h3>Paso 1 de 3. Por favor, introduce estos datos.</h3>

<form method=”post” action=”<?php echo $html->url(‘/usuarios/segunda_pantalla’)?>”>

La vista segunda_pantalla.thtml, así:

<h2>Alta de usuario</h2>
<h3>Paso 2 de 3. Por favor, introduce estos datos.</h3>

<form method=”post” action=”<?php echo $html->url(‘/empresas/tercera_pantalla’)?>”>

Y, finalmente, tercera_pantalla.thtml, así:

<h2>Alta de usuario</h2>
<h3>Paso 3 de 3. ¡Estás a punto de darte de alta! ¿Es todo esto correcto?</h3>

<form method=”post” action=”<?php echo $html->url(‘/empresas/????????’)?>”>

No sabemos a quien envía los datos tercera_pantalla.thtml.

Las cuestiones que plantea este ejercicio son:

1. ¿Cómo se validan los datos que el usuario introduce en primera_pantalla.thtml y segunda_pantalla.thtml, mostrando los mensajes de error, con $html->tagErrorMsg?

2. ¿Quién procesa el $data de tercera_pantalla.thtml? ¿Cómo? ¿Por qué?

3. ¿Entra en conflicto este planteamiento con el MVC, o con la implementación que hace Cake de este patrón de arquitectura de software?

Anuncios

Una respuesta

  1. He llegado a http://c7y.phparch.com/c/entry/1/art,mvc_and_cake a través de http://cakephpilia.blogspot.com/2008/03/personalizando-find-y-adelgazando-el.html.

    Nate Abele dice en este artículo: “Incluso cuando trabajan con el MVC, es normal que los desarrolladores PHP apliquen algunas prácticas típicas de PHP, como utilizar un diseño orientado a páginas. Esto les impide aprovechar todo el potencial que ofrece el patrón.”

    Es posible que no sea una buena idea que un controlador procese los datos que le envía una vista que no es la suya.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: