8. Listar los artistas: vistas en CakePHP y… ¡cambio de versión inesperado!

En este post veremos varias cosas: desde cómo funcionan las vistas, hasta cómo el error Missing View ha hecho que me decida a cambiar al CakePHP 1.1. Aprovecho para recordar que este es un espacio de aprendizaje en el que escribo para recordar lo que aprendo sobre la marcha, que comparto con vosotros. Ready to bake así, sobre la marcha?: empecemos por las vistas, pues.

Ayer utilizábamos el andamiaje para construir nuestra primera aplicación web y no nos preocupábamos de las vistas de la aplicación porque el scaffolding utiliza unas plantillas predeterminadas; hoy complicamos un poco más la cosa y trabajamos de forma más manual, por decirlo así. Lo primero que haremos, pues, será quitar la variable $scaffold de la clase ArtistasController para empezar una aplicación web desde cero.

Por una parte, CakePHP funciona de tal manera que se tienen que crear tantas carpetas, en c:\wamp\www\discografia\app\views, como tablas de la base de datos se quieren manipular; por otra, y como veremos un poco más adelante, se suele crear una vista para cada acción que se especifica en el controlador.

En algunos ejemplos que he encontrado en Internet -según lo que se quiera hacer- crean las vistas add.thtml, edit.thtml, index.thtml y view.thtml, que sirven para añadir, editar, listar y manipular registros individuales, respectivamente (por cierto, la extensión .thtml es para CakePHP 1.1; en CakePHP 1.2 se utiliza la extensión .cpt para las vistas). En el blog Zona de pruebas, por ejemplo, su autora trabaja con CakePHP 1.1 y en la carpeta posts de su ejemplo aparecen las vistas add.thtml, index.thtml y view.thtml, como se ve en http://demoucron.wordpress.com/2007/08/23/estructura-de-carpetas-con-cakephp/. En www.mononeurona.org también explican muy bien el funcionamiento de las vistas CakePHP, más concretamente en http://www.mononeurona.org/files/userfiles/aarkerio_17.pdf.

Como nosotros, de momento, sólo queremos listar los registros de la tabla artistas, tenemos que crear la carpeta c:\wamp\www\discografia\app\views\artistas, y dentro de ella debemos crear la vista para listar los registros de los artistas, index.ctp (porque estamos trabajando con CakePHP 1.2). Más adelante veremos qué se tiene que escribir aquí; de momento, podemos dejar en blanco el archivo index.ctp.

A continuación hay que editar el archivo artistas_controller.php y dejarlo así:

¿Qué hemos hecho? Tal y como dice la documentación oficial de CakePHP, hemos definido la función index(), cuya lógica se ejecuta cada vez que tecleamos http://www.discografia.com/artistas/index en la barra de direcciones; o http://localhost/discografia/artistas, si trabajamos en local. Esta función pasa a la vista c:\wamp\www\discografia\app\views\artistas\index.thtml los datos que obtiene el modelo Artista cuando ejecuta el método findAll().

Después de añadir la función index() al controlador ArtistasController, y de crear la vista c:\wamp\www\discografia\app\views\artistas\index.thtml, podríamos hacer ya nuestras primeras pruebas y escribir, en la barra de direcciones del navegador, http://localhost/discografia/artistas. A mí, que trabajo con CakePHP 1.2, no me funcionó: me salía todo el rato un error de tipo Missing View como este:

Pensé que esto pasaba porque en mi CakePHP 1.2 estaba utilizando extensiones .thtml, en lugar de las .ctp, así que cambié las extensiones a .ctp. Después de hacer este cambio, sin embargo, como me seguía saliendo este error Missing View, me animé a investigar por Internet y descubrí que a otras personas les pasaba algo parecido con su CakePHP 1.2. En http://groups.google.com/group/cake-php/browse_thread/thread/2441457c3618cc4c/9cc7cc4453c2a5dc?#9cc7cc4453c2a5dc explican (en inglés) cómo solucionar esto: cambian los permisos del archivo view.php de la carpeta /cake (trabajan en Linux).

Finalmente, después de este inesperado Missing View de CakePHP 1.2, he decidido instalar la versión estable 1.1.20.7692, que trabaja con extensiones .thtml. Si alguien sabe cómo solucionar este Missing View de CakePHP 1.2 sería estupendo que dejara aquí algún comentario; yo voy por la vía rápida (creo) y me paso a CakePHP 1.1.

Anuncios

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: