Lens en Laravel Nova

arrow_back Blog

Laravel Nova es un panel de administración para Laravel que nos permite fácilmente navegar y administrar aplicaciones Laravel.

Una "Lens" es una herramienta de Laravel Nova que nos permite visualizar y filtrar los datos de una aplicación Laravel de una manera personalizada. Es similar a un informe o una vista personalizada en otras aplicaciones de administración de bases de datos. Las Lenses son útiles para mostrar datos agregados o resumidos de una manera que puede ser útil para el administrador de la aplicación.

Crear una Lens en Laravel Nova

Para crear una Lens en Laravel Nova, debes definir una clase de Lens en tu aplicación Laravel que extienda la clase Laravel\Nova\Lenses\Lens y sobrescriba algunos métodos para especificar la consulta de datos que se debe utilizar y cómo se deben mostrar los datos. Luego, debes registrar la Lens en tu aplicación de Nova a través de la propiedad lenses del resource donde la desees utilizar. Una vez registrada, la Lens aparecerá en el menú de tu resource y podrás utilizarla para ver y filtrar los datos de tu resource.

El método query en una Lens

En una clase Lens de Laravel Nova, el método query se utiliza para especificar la consulta de datos que se debe usar para obtener los datos que se deben mostrar en la Lens. Este método toma dos argumentos:

  • $request: una instancia de la clase Laravel\Nova\Http\Requests\LensRequest, que contiene información sobre el estado actual de la Lens, como los filtros y ordenaciones aplicados.

  • $query: una instancia de la clase Illuminate\Database\Eloquent\Builder, que representa la consulta base que se debe utilizar para obtener los datos.

En nuestro ejemplo, la consulta se une a la tabla posts y agrupa los resultados por id del usuario. También se utiliza la función COUNT de MySQL para contar el número de publicaciones de cada usuario. Finalmente, se utiliza el método withOrdering y withFilters para aplicar cualquier ordenación y filtrado especificados en el estado actual de la Lens.

Una vez que haya especificado la consulta de datos que se debe usar, puede usar los resultados en la vista de la Lens para mostrar los datos a los usuarios.

El método fields en una Lens

En una clase Lens de Laravel Nova, el método fields se utiliza para especificar los campos que se deben mostrar en la vista de la Lens. Este método toma un único argumento:

  • $request: una instancia de la clase Illuminate\Http\Request, que contiene información sobre la solicitud HTTP actual.

El método fields debe devolver un array de campos que se deben mostrar en la vista de la Lens. Cada campo es una instancia de una clase que extiende la clase Laravel\Nova\Fields\Field, y puede especificar el tipo de campo, el nombre y otros detalles sobre cómo se debe mostrar el campo.

En nuestro ejemplo, se están mostrando cuatro campos: el ID del usuario, el nombre del usuario, el correo electrónico del usuario y el número de publicaciones del usuario. Todos los campos son sortables, lo que significa que los usuarios pueden hacer clic en el encabezado de la columna para ordenar los resultados por ese campo.

Puede usar diferentes tipos de campos, como Text, Number y Boolean, dependiendo del tipo de datos que esté mostrando en su Lens. También puede personalizar cómo se muestran los campos mediante la utilización de diferentes opciones y métodos de la clase de campo correspondiente.

Utilizar una Lens en un Resource de Laravel Nova

Para utilizar una Lens en un recurso de Laravel Nova, debes registrarla en la propiedad lenses de su resource Nova. Esto hará que la Lens aparezca en el listado del resource y esté disponible para su uso.

Por ejemplo, si hemos creado una Lens llamada UserStatistics y deseamos utilizarla en un recurso de usuarios, podemos agregarla a la propiedad lenses del recurso de usuarios de la siguiente manera:

Una vez que hayas agregado la Lens al recurso, aparecerá en el listado de usuarios y podrás seleccionarla para ver y filtrar los datos de tu aplicación de Laravel de una manera personalizada.


Si te interesa aprender a trabajar con Laravel Nova para desarrollar los mejores sistemas de administración con Laravel no te pierdas este curso.

Cursosdesarrolloweb Cursosdesarrolloweb

Cursosdesarrolloweb es una plataforma educativa con cursos y tutoriales en texto y vídeo.

Términos y condiciones Política de privacidad Formulario de contacto

Copyright 2024 © Todos los derechos reservados.

Contacto