Ejercicios de Introducción a CodeIgniter 2

FRONTEND::Libros

Modelo de libros

Crea el modelo **Libros_model** dentro de la carpeta específica para los modelos (**application/models/**) dentro del fichero **libros_model.php**. Dicha clase será similar a una clase DAO (puedes basarte en el ejemplo de los apuntes) y debe implementar los métodos read($id), getComentarios($id), getAutores($id) y getLibros() siguiendo el patrón Active Record para independizar el uso de SQL (échale un ojo a la clase Database en el manual de CodeIgniter, para ver las opciones que nos proporciona dicha clase para realizar consultas, inserciones, etc)

Explicación de los métodos:

  • getComentarios($id): devuelve un array de los comentarios validados del libro cuyo id nos pasan como parámetro.

  • getAutores($id): devuelve un array con los autores del libro cuyo id nos pasan como parámetro.

  • read($id): devuelve los datos de un libro (cuyo identificador es $id) junto con el autor o autores y los comentarios validados del mismo. El método devolverá un array asociativo llamado $libro con los datos del libro, junto con un índice 'autores' con los autores del libro y otro índice 'comentarios' con los comentarios validados del mismo.

  • getLibros(): devuelve un array de libros dados de alta en la base de datos. Hay que recorrer la tupla de resultados para que en cada libro se añada un índice 'autores' con los autores de cada libro.

Este código es el que puedes usar para devolver un array de libros con los datos preprocesados:

...
$libros = array();
//Recorrer el array resultados
while($libro = $result->fetch())
{
   $libro['titulo'] = stripslashes($libro['titulo']);
   $libro['descripcion'] = stripslashes($libro['descripcion']);
   $libro['precio'] = number_format($libro['precio'],2);
   $libro['editorial'] = stripslashes($libro['editorial']);
   $id = $libro['id'];

   $libro['autores'] = $this->getAutores($id);;
   $libro['comentarios'] = $this->getComentarios($id);

   $libros[] = $libro;
}
...

Controlador de libros

Crea el controlador **Libros** (puedes basarte en el ejemplo de los apuntes) que extienda de la clase CI_Controller. Reemplaza el constructor __construct() llamando al controlador del padre y luego activa el profiler con $this->output->enable_profiler(TRUE) para poder visualizarlo al final de las páginas home y ficha del libro.

Se pide implementar métodos (acciones) siguientes:

  1. index() que cargue los libros del modelo Libros_model y los pase a la vista listar.php que habrá en almacenar en la carpeta libros (te puedes basar en el código de los apuntes).La forma de cargar la vista será con libros/listar
  2. ver() que obtenga el id del libro de la URI. Dicho método obtiene el libro del modelo junto con sus comentarios validados y los carga en la vista 'libros/ver.php'. Comprueba que efectivamente carga los datos del libro adecuado y que muestra un error en el caso de libro incorrecto.

Dentro del fichero **routes.php** cambia el controlador introducido por defecto 'welcome' por el de '**libros**'. Accede a la URL http://localhost/proyecto/ y debe aparecer directamente la portada del proyecto

Vistas relacionadas con los libros: listar.php y ver.php

Crea un directorio dentro de la carpeta de las vistas **application/views** llamada **libros**. Dentro copia las plantillas home y libro_ficha que habrás realizado ya en la parte de HTML y CSS y las renombras por **listar.php** y **ver.php** respectivamente. Se recomienda usar la sintaxis alternativa de PHP para crear las plantillas.

Para crear los enlaces en las vistas tendrás que usar el helper **anchor()** y **base_url** del helper URL (mira el manual para más información)

Recuerda cargar la cabecera y pie de página del proyecto en los controladores index() y ver().

Home

La plantilla home será una fichero PHP llamado listar.php y se almacenará en la ruta **application/views/libros/**. Dicha vista contiene la página principal del frontend. En esta página veremos todos los libros dados de alta y la cesta de la compra, si existe. En la figura vemos una captura dicha página principal.

Página principal de la aplicación UAZON

Se distinguen varias partes:

  • Formulario de búsqueda de libros: Se realizará con AJAX más adelante por lo que no hay que hacer nada por ahora.
  • Novedades: mostrar todos los libros dados de alta (más adelante se completará el código para ese listado). En ese listado, tanto el título como la portada del libro, contendrán un enlace hacia la vista del libro en cuestión: http://localhost/proyecto/index.php/libros/ver/id.
    (id será el identificador del libro. Por ejemplo: 1, 7, 100, etc)

  • Los más leidos: mismos datos que novedades. Como se ha dicho anteriormente, más adelante se completará el código para mostrar las últimas novedades.

Ver los datos de un libro (ficha_libro)

Página donde se muestran los datos del libro y los comentarios (validados) realizados sobre el mismo. En la siguiente figura podemos ver una captura del mockup proporcionado:

Ver los datos de un libro

Debajo de los datos del libro mostraremos los comentarios validados (columna **validado** a 1) por los usuarios registrados.

results matching ""

    No results matching ""