Modificaciones de Menú y Layout en Aplicación Web con G

Clase 34 de 35Curso de Desarrollo Web con PHP y Yii2

Resumen

¿Cómo mejorar nuestra aplicación de biblioteca de manera sencilla?

¿Estás buscando formas de optimizar y mejorar el desarrollo de tu aplicación web? En esta clase, hemos hecho exactamente eso usando un proyecto simple de biblioteca. Hemos aplicado algunos ajustes y técnicas que pueden parecer menores, pero que pueden marcar una gran diferencia.

¿Cómo personalizar la navegación de nuestra aplicación?

La personalización de la navegación de nuestra aplicación puede mejorar la experiencia del usuario y hacer que la aplicación sea más coherente con nuestras necesidades.

  1. Cambiar el nombre de la aplicación: En el archivo config/web.php, añadimos la llave Name y modificamos el nombre a "Debug Club".

    // config/web.php
    'name' => 'Debug Club',
    
  2. Modificar el menú de navegación: En el archivo main.php, que está dentro de views/layouts, hicimos ajustes para cambiar las etiquetas del menú. Sustituimos "Home" por "Libros" y "About" por "Autores". Además, eliminamos el enlace de "Contact" del menú.

    // views/layouts/main.php
    $menuItems = [
        ['label' => 'Libros', 'url' => ['site/index']],
        ['label' => 'Autores', 'url' => ['author/all']],
        ['label' => 'Logout', 'url' => ['site/logout']]
    ];
    

¿Cómo añadir funcionalidad al detalle del libro?

A menudo, agregar funcionalidades a una aplicación puede parecer complejo, pero con pequeños pasos se puede lograr fácilmente.

  1. Crear un enlace en el detalle del libro: Hemos añadido un enlace en el detalle del libro para redirigir al usuario al detalle del autor. Utilizamos HTML y ayudándonos de los atributos de nombre e ID del autor.

    // Book Detail
    echo Html::a($book->author->name, ['author/detail', 'id' => $book->author_id]);
    
  2. Evitar votaciones repetidas en los libros: Para evitar que un usuario vote más de una vez por el mismo libro, hemos implementado una función en el modelo User que verifica si el usuario ya ha votado.

    // User Model
    public function hasVotedForBook($bookID)
    {
        $bs = BookScore::find()->where(['book_id' => $bookID, 'user_id' => $this->id])->one();
        return !empty($bs);
    }
    
    // Vista
    if ($user->hasVotedForBook($book->id)) {
        echo "Ya votaste. Tu voto fue de " . $user->getVoteForBook($book->id)->score;
    } else {
        // Mostrar formulario de votación
    }
    

¿Cómo personalizar el pie de página de la aplicación?

Con personalizaciones simples, podemos hacer que nuestra aplicación sea más profesional y adaptada a nuestras necesidades.

  1. Modificar el pie de página: Cambiamos el nombre de "My Company" a "Platzi" y mostramos el año actual usando la función date con el formato de año de cuatro dígitos.

    // views/layouts/main.php - Footer
    echo Html::encode("Platzi " . date('Y'));
    

¿Qué hacer cuando tienes problemas con consultas SQL?

Cuando te enfrentas a problemas con consultas SQL en Active Query, es útil provocar un error deliberadamente para revisar la consulta SQL generada. Este tipo de técnica nos permite entender mejor las operaciones detrás de escena.

// User Model - Provocar error
$bookID = 'book_ids'; // Cambia a un identificador no existente para provocar un error

Este enfoque, aunque parece contraproducente, puede ser un recurso valioso cuando se desea desentrañar el funcionamiento interno de las consultas SQL generadas por Active Query.


¡Con estos sencillos consejos, puedes mejorar significativamente tu aplicación de biblioteca y llevar tus habilidades de desarrollo al siguiente nivel! No dejes de explorar todas las funcionalidades y herramientas que tienes a tu disposición y sigue aprendiendo.