Condicionales y funciones para gestionar libros en la aplicación
Clase 30 de 35 • Curso de Desarrollo Web con PHP y Yii2
Resumen
¿Cómo identificamos si un usuario tiene un libro o no?
En el contexto de una aplicación de gestión de libros, es fundamental poder determinar si un usuario tiene un libro específico. En el ejercicio anterior, el objetivo era modificar la vista para reflejar si un usuario ya cuenta con un libro o no. Esta información es crucial para personalizar la interacción del usuario con la plataforma, ofreciendo opciones personalizadas como calificar el libro o eliminarlo de su lista.
Para implementar esta funcionalidad, partimos de la vista, donde añadiremos un condicional que muestre diferentes opciones según el estado del libro:
if (G\App\User\Identity::hasBook($bookId)) {
// Lógica para cuando el usuario tiene el libro
} else {
// Lógica para cuando el usuario no tiene el libro
}
Este fragmento de código evalúa si el usuario ha registrado el libro como suyo y, en función de ello, despliega las acciones correspondientes.
¿Cómo implementamos la función hasBook
en el modelo de usuario?
La función hasBook
es clave para determinar la pertenencia de un libro en el modelo de usuario. Se verifica si el libro específico está asociado al usuario mediante una consulta a la base de datos.
public function hasBook($bookId) {
$userBooks = UserBook::where([
'user_id' => $this->id,
'book_id' => $bookId
])->get();
return !empty($userBooks);
}
En este código:
- Se realiza una consulta sobre la tabla
UserBook
buscando coincidencias de usuario y libro. - El método
where
filtra los registros que coinciden con eluser_id
ybook_id
. - Si el arreglo resultante no está vacío, significa que el usuario posee el libro, retornando
true
. Caso contrario, se retornafalse
.
¿Qué hacemos después de identificar un libro como propio?
Una vez que se confirma que el usuario posee un libro, se ofrecen dos opciones en la vista: calificar el libro o indicar que ya no lo posee. La calificación se realiza mediante un formulario que envía la nota al controlador BookScore
.
Implementación del formulario de calificación
Como parte de la futura implementación, se diseñará un formulario para que los usuarios califiquen sus libros. Este formulario enviará una calificación del 1 al 5 al controlador BookScore
, encargándose de recibirla y procesarla adecuadamente en el sistema.
<form action="/book-score" method="post">
<label for="rating">Calificar este libro:</label>
<select id="rating" name="rating">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
<button type="submit">Enviar</button>
</form>
Esta implementación no solo mejora la experiencia del usuario, permitiéndole interaccionar y dar feedback sobre sus libros, sino que también crea un sistema más dinámico que puede adaptarse a futuras funcionalidades, como la revaluación de libros o el análisis de datos de calificación.
¡Continúa explorando y extendiendo tus conocimientos para seguir construyendo aplicaciones robustas y centradas en el usuario!