jueves, 7 de junio de 2007

Avances sorprendentes

He tenido un día bastante bueno con Cake. Los avances empiezan a ser significativos y algunas cosas van estando más claras.

Los cambios del behavior (antes helper, antes behavior) joinTable me han permitido desarrollar un poco más los conceptos MVC y los fat models. Voy descargando al controlador de trabajo y se lo paso al modelo. Es muy interesante, por ejemplo, cómo se programa la duplicación de registros, o la creacion de un modelo desde otro.

Por otro lado, mis vistas piden muchos helpers. :-)

El helper simpleTable (que aún no he publicado) me ha aportado mucho en trabajar con arrays para pasar parámetros complejos y también para conocer los entresijos del HtmlHelper.

Incluso he trabajado con la paginación y ya tengo en mente preparar un helper para generar navegadores de listados. Eso me ha llevado a utilizar la sesión para almacenar datos. Tengo que ver algunas cosas más sobre eso, porque hay un par de aspectos del paginator helper que me gustaría dominar mejor.

Por otro lado, he empezado a salir del nicho "una sola tabla cada vez" y me voy moviendo en el terreno de las asociaciones. Por ejemplo, en el modelo Recurso, he incluido un callBack beforeSave con el que guardar Categorías nuevas cuando al usuario no le llegan las que le ofrece el menú desplegable.

Otro aspecto que he comenzado a mirar es el de la maquetación. Creo que empiezo a entender como funciona el tema de los layouts y su relación con las vistas y, sobre todo, los elements. He estado jugando con las css y un layout para ver qué tal se presenta Cake. Y la verdad es que la pinta es buena. Una de las grandes ventajas es que se puede diseñar la presentación por un lado e integrar la aplicación en el diseño, porque los layouts no son otra cosa que páginas (X)HTML.

¡Hasta me he pasado a los PNG para iconcitos y todo!

Sobre esto de la presentación hay un tema que no tengo del todo claro, y es cómo trabajar cuando quiero que una acción no vaya a la vista principal. Por ejemplo, si un Element tiene un enlace que hace que se actualice. ¿Ajax? ¡Demasiado pronto para mí, creo! Pero ¡quién sabe!.

Quedan aún muchas cosas que aprende, eso sí. Sin embargo, parece que he pasado el punto de "no retorno".

Algo que me he dado cuenta es que CakePHP es un framework que deja mucho campo al PHP. Me explico. Muchos frameworks son como lenguajes en sí mismos, con centenares de funciones que hacen de todo. Sin embargo, Cake proporciona más bien una base de trabajo y llega hasta el límite donde no quieres que hagan las cosas por ti. Creo que es bueno que sus desarrolladores no quieran extender demasiado el API.

Es decir. Te descarga del tema del movimiento de datos, creación de formularios, gestión de "infraestructura" y todas esas cosas de rutina que hay que hacer. Sin embargo, no intenta tomar decisiones por el programador. No sé si me explico del todo.

Se nota más en las vistas. Aunque es cierto que el FormHelper hace muchísimo, la verdad es que las responsabilidad de la vista te la deja a ti, no hay funciones o helpers para cosas muy específicas. Los que hay tienen bastante fundamento y los resultados son muy buenos. Pero a la hora de presentar datos, por ejemplo, te deja las manos libres. Al principio puede parecer un poco jorobado, pero ahí entra tu habilidad para decidir cuando necesitas un helper y escribirlo.

No hay comentarios: