Saltar al contenido

Presentación de Laravel Nova | Vinova

Estoy encantado de anunciar al miembro más nuevo del ecosistema de Laravel: Laravel Nova. Nova es un panel de administración bellamente diseñado para Laravel. Nos hemos preocupado por los pequeños detalles y hemos elaborado cuidadosamente a Nova no solo para que se vea genial, sino para que sea un placer trabajar con él.
En esta publicación, repasaré las características clave de Nova; sin embargo, asegúrese de ver la grabación de mi charla Laracon para una demostración detallada de las características de Nova.

Prefacio

Nova se instala a través de Composer como un paquete de Laravel. No interfiere con su aplicación existente de ninguna manera. De hecho, puede instalar Nova en aplicaciones existentes de Laravel 5.6 que ya ha creado.
En el front-end, Nova funciona con Vue.js, Vue Router y Tailwind.css. Esto lo convierte en una combinación poderosa y flexible, especialmente en lo que respecta a la personalización: es muy fácil crear herramientas, tarjetas y campos personalizados.
Cada modelo de Eloquent en su aplicación tiene una clase de “recurso” Nova correspondiente que define sus campos, acciones, filtros, lentes y tarjetas. Nova se configura completamente usando clases PHP simples. No se almacena ninguna configuración en la base de datos.

Administracion de recursos

Por supuesto, una característica principal de Nova es la capacidad de crear, leer, actualizar y eliminar recursos en su base de datos. Hemos trabajado duro para cubrir todos los casos extremos en este sentido. ¿Necesita actualizar los datos de la tabla “intermedia / dinámica” de una relación polimórfica de varios a varios? Te tenemos cubierto. Nova tiene un apoyo maravilloso para todos los tipos de relaciones de Eloquent.
Las vistas de detalles de recursos le brindan acceso instantáneo a la información de un recurso, así como a sus recursos relacionados, todo con búsqueda, paginación, clasificación, filtros y más a la velocidad del rayo.
Nova también se envía con una variedad de excelentes tipos de campo. Por supuesto, se cubren los conceptos básicos como texto, booleano, número, carga de archivos y fechas. Sin embargo, los campos adicionales como Markdown, Trix, Code y Place realmente hacen que sea un placer trabajar con Nova.

Búsqueda

De forma predeterminada, Nova utiliza consultas SQL para buscar sus recursos; sin embargo, si su aplicación aprovecha Laravel Scout, Nova prefiere usar búsquedas de Scout de manera fluida e inteligente, lo que le brinda todo el poder de un verdadero motor de búsqueda como Algolia.
Por supuesto, la búsqueda está disponible en índices de recursos e índices de relaciones, pero también está disponible cuando se adjuntan recursos. Por ejemplo, al crear un recurso de “Publicación” que pertenece a un “Usuario”, Nova proporciona una hermosa entrada de búsqueda para encontrar usuarios rápidamente:
Nova también incluye un hermoso componente de búsqueda global que puede buscar en todos sus tipos de recursos a una velocidad increíble:

Comportamiento

Las acciones son clases PHP simples que realizan una tarea determinada en un recurso o lote de recursos. Cada acción contiene un método de “control” que recibe los campos de acción entrantes y una colección de modelos.
¿Tiene una acción que tarda un poco en ejecutarse? No hay problema. Nova puede ponerlo en cola usando el servicio de cola incorporado de Laravel:
Una vez que se ha definido una acción y se ha adjuntado a un recurso, es muy fácil activarla a través de la interfaz de usuario:
Al marcar un modelo Eloquent con el rasgo “Accionable” de Nova, Nova proporciona una “pista de auditoría” de las acciones que se han realizado contra un recurso determinado desde dentro de Nova, incluido quién las activó:
Todas las fechas dentro de la interfaz de usuario de Nova se localizan de forma automática e inteligente en la zona horaria del usuario. ¿En Europa? No se preocupe … verá el tiempo de 24 horas, localizado en su zona horaria.

Filtros

Los filtros le permiten definir clases PHP que abarcan sus consultas de índice de recursos y pueden habilitarse / deshabilitarse a través de la interfaz de usuario. Por ejemplo, un filtro puede indicarle a la consulta que solo muestre registros que tengan una columna que coincida con un valor dado:
Una vez que el filtro se ha definido y adjuntado al recurso, se puede habilitar a través del índice de ese recurso. Los filtros se pueden aplicar en el índice principal del recurso, así como en cualquier momento en que ese recurso se muestre como una relación:

Lentes

Las lentes le permiten crear un enfoque completamente diferente para ver un recurso determinado. Por ejemplo, un recurso de “Usuario” puede tener una lente de “Usuarios más valiosos” que muestra los usuarios y sus compras totales de por vida, ordenados por los usuarios que han generado la mayor cantidad de ingresos. Dentro de una clase de lente, tiene control total sobre la construcción de la consulta Eloquent subyacente:
Cada lente puede definir su propio conjunto de campos que están completamente separados del recurso en sí:
Una vez que la lente se ha definido y adjuntado a un recurso, se puede acceder a él a través del índice de ese recurso:

Métrica

Nova proporciona tres tipos de gráficos listos para usar: valor, tendencia y partición. Realmente no creerá lo fácil que es generar estas métricas. Lo que antes hubiera sido un trabajo de todo el día ahora se puede hacer en segundos.
Por ejemplo, puede ver fácilmente los nuevos usuarios en nuestra aplicación para el trimestre actual en comparación con el trimestre anterior con una sola línea de código:
Pero, no está limitado a un simple conteo. Con la misma facilidad, podría ver el promedio, la suma, el mínimo o el máximo de un atributo determinado a lo largo del tiempo. Una vez que hayamos registrado esta métrica con un recurso, se mostrará en el índice principal de ese recurso:
Es igual de fácil crear hermosas métricas de “tendencias”. Todo lo que necesita es una sola línea de código:
Por supuesto, no está obligado a mostrar tendencias durante el día. Puede generar fácilmente tendencias que tracen datos por minuto, hora, día, semana o mes.
Una vez que se define nuestra métrica de tendencia, se puede adjuntar a un recurso y se mostrará en el índice principal de ese recurso:

Autorización

Nova se integra maravillosamente con el sistema de autorización de políticas de Laravel. Aprovechamos las características de Laravel con las que ya está familiarizado para crear una experiencia de desarrollo exquisita. Tiene un control granular sobre quién puede ver, crear, actualizar o eliminar recursos. Si el modelo de Eloquent subyacente tiene una política correspondiente, Nova la usará automáticamente para autorizar acciones de recursos.
Además, tiene control total sobre quién puede adjuntar recursos a otros recursos a través de las relaciones. Por ejemplo, puede limitar las funciones que pueden asignarse a un usuario determinado:

Personalización

Casi toda la interfaz de usuario de Nova está construida completamente en Vue utilizando componentes de Vue de un solo archivo. Debido a esto, tiene la máxima flexibilidad al escribir sus propias herramientas, tarjetas y campos personalizados para Nova. Proporcionamos excelentes ayudantes de CLI para generar el andamiaje para todos estos tipos de complementos:
Cada herramienta contiene un componente “Tool.vue”. A partir de ahí, el cielo es el límite. Puede realizar llamadas de Axios a su aplicación Laravel back-end, mientras usa Tailwind.css para ajustar la apariencia de su herramienta. Es difícil decir cuánta libertad tienes. Literalmente, cualquier cosa que pueda construir con componentes de Vue y un back-end de Laravel se puede implementar en Nova. Nova simplemente se mantiene fuera de tu camino. Es realmente genial:
Las tarjetas personalizadas (los pequeños paneles que ha visto anteriormente en los ejemplos de métricas) y los campos personalizados se implementan de manera similar. Las tarjetas personalizadas contienen un componente Card.vue que puede personalizar con total libertad.
Los campos personalizados contienen tres componentes de Vue: uno para pantallas de índice, uno para pantallas de detalles y otro para formularios. Nuevamente, tiene total libertad al definir cómo aparecen y se comportan las herramientas dentro de Nova.
Al aprovechar el poder de Vue.js y Laravel, le hemos brindado un hermoso lienzo para crear. No puedo esperar a ver qué tipo de herramientas personalizadas crea y comparte la comunidad.

Notas finales

Hay mucho más en Nova de lo que puedo incluir en esta publicación. No puedo esperar para lanzarlo el próximo mes. Creo que te encantará y espero que ya no tengas miedo de crear paneles de administración para tus aplicaciones. Yo se que no. ❤️

Este contenido se publicó originalmente aquí.