El paquete proporciona un contenedor agradable y sencillo para Fractal para usar en sus aplicaciones Laravel. Si no sabes lo que hace Fractal, echa un vistazo a su introducción. En pocas palabras, Fractal es muy útil para transformar datos antes de usarlos en una API.
Usando datos Fractal se pueden transformar así:
utilizar LeagueFractalManager; utilizar LeagueFractalResourceCollection;$libros = [ ['id' => 1, 'título' => 'Padre Cerdo', 'caracteres' => [...]], ['id' => 2, 'título' => 'Juego de matar a todos', 'personajes' => [...]] ];$manager = nuevo Manager();$recurso = nueva Colección($libros, nuevo BookTransformer());$manager->parseIncludes('caracteres');$manager->createData($recurso)->toArray() ;
Este paquete hace que el proceso sea un poco más fácil:
fractal() ->colección($libros) ->transformWith(nuevo BookTransformer()) ->incluirCaracteres() ->toArray();
Los amantes de las fachadas estarán encantados de saber que se proporciona una fachada:
Fractal::colección($libros)->transformWith(new BookTransformer())->toArray();
También hay una sintaxis muy corta disponible para transformar datos rápidamente:
fractal($libros, nuevo BookTransformer())->toArray();
También puedes transformar directamente desde una colección de Laravel:
recoger($libros)->transformWith(new BookTransformer());
Transformar directamente desde una colección de Laravel es particularmente útil para obtener resultados de Eloquent:
Usuarios::todos()->transformWith(new UserTransformer())->toArray();
Spatie es una agencia de diseño web con sede en Amberes, Bélgica. Encontrará una descripción general de todos nuestros proyectos de código abierto en nuestro sitio web.
Invertimos muchos recursos en la creación de los mejores paquetes de código abierto. Puedes apoyarnos comprando uno de nuestros productos pagos.
Agradecemos mucho que nos envíe una postal desde su ciudad natal, mencionando cuál de nuestros paquetes está utilizando. Encontrarás nuestra dirección en nuestra página de contacto. Publicamos todas las postales recibidas en nuestro muro virtual de postales.
Puede introducir el paquete a través del compositor:
el compositor requiere spatie/laravel-fractal
El paquete se registrará automáticamente.
Si desea cambiar el serializador predeterminado, el paginador predeterminado o la clase fractal predeterminada SpatieFractalFractal
debe publicar el archivo de configuración:
Proveedor artesanal de php: publicar --provider="SpatieFractalFractalServiceProvider"
Si está actualizando a Laravel 5.5, el archivo de configuración existente debe cambiarse de nombre de laravel-fractal.php a fractal.php
Este es el contenido del archivo publicado:
return [/* * El serializador predeterminado que se utilizará al realizar una transformación. * Puede dejarse vacío para usar el valor predeterminado de Fractal. Puede ser una cadena * o una subclase LeagueFractalSerializerSerializerAbstract. */'default_serializer' => '',/* El paginador predeterminado que se utilizará al realizar una transformación. * Puede dejarse vacío para usar el predeterminado de Fractal. Puede ser una cadena * o una subclase LeagueFractalPaginatorPaginatorInterface. */'default_paginator' => '',/* * LeagueFractalSerializerJsonApiSerializer utilizará este valor * como prefijo para los enlaces generados. Establezca en "nulo" para deshabilitar esto. */'base_url' => null,/* * Si desea anular o extender la instancia predeterminada de SpatieFractalFractal * proporcione el nombre de la clase que desea utilizar. */'fractal_class' => SpatieFractalFractal::class,'auto_includes' => [/* * Si está habilitado, Fractal agregará automáticamente los nombres de quién * están presentes en el parámetro de solicitud `include`. */'enabled' => true,/* * El nombre de la clave en la solicitud donde debemos buscar las inclusiones para incluir. */'request_key' => 'incluir', ],'auto_excludes' => [/* * Si está habilitado, Fractal agregará automáticamente las exclusiones cuyos * nombres están presentes en el parámetro de solicitud `excluir`. */'enabled' => true,/* * El nombre de la clave en la solicitud donde debemos buscar las exclusiones a excluir. */'request_key' => 'excluir', ],'auto_fieldsets' => [/* * Si está habilitado, Fractal agregará automáticamente los conjuntos de campos cuyos * nombres están presentes en el parámetro de solicitud `campos`. */'enabled' => true,/* * El nombre de la clave en la solicitud, donde debemos buscar los conjuntos de campos para analizar. */'request_key' => 'campos', ], ];
Consulte la documentación de spatie/fractalistic
para conocer todos los métodos que proporciona este paquete.
En todos los ejemplos de código puedes usar fractal()
en lugar de Fractal::create()
.
Para devolver una respuesta con datos json, puede hacerlo en una aplicación Laravel.
$libros = fractal($libros, new BookTransformer())->toArray();return respuesta()->json($libros);
El método respond()
de la clase Fractal puede simplificar un poco este proceso.
return fractal($libros, new BookTransformer())->respond();
Puede pasar un código de respuesta como primer parámetro y, opcionalmente, algunos encabezados como segundo
return fractal($libros, new BookTransformer())->respond(403, ['a-header' => 'un valor', 'otro-header' => 'otro valor', ]);
Puede pasar opciones de codificación json como tercer parámetro:
return fractal($libros, nuevo BookTransformer())->respond(200, [], JSON_PRETTY_PRINT);
También puedes configurar el código de estado y los encabezados mediante una devolución de llamada:
use IlluminateHttpJsonResponse;return fractal($books, new BookTransformer())->respond(function(JsonResponse $response) {$response->setStatusCode(403) ->encabezado('un-encabezado', 'un valor') ->withHeaders(['otro-encabezado' => 'otro valor','otro-encabezado' => 'otro valor', ]); });
Puedes agregar métodos a la clase Fractal usando el rasgo Macroable de Laravel. Imagine que desea agregar algunas estadísticas a los metadatos de su solicitud; puede hacerlo sin saturar su código:
utilizar SpatieFractalFractal; Fractal::macro('stats', function ($stats) {// transforma las estadísticas pasadas según sea necesario aquíreturn $this->addMeta(['stats' => $stats]); });fractal($libros, nuevo BookTransformer())->stats(['runtime' => 100])->respond();
Puede ejecutar el comando make:transformer
para generar rápidamente un transformador ficticio. De forma predeterminada, se almacenará en el directorio appTransformers
.
Cambie el nombre de su archivo de configuración de laravel-fractal
a fractal
v3
se introdujo para intercambiar league/fractal
con spatie/fractalistic
. Se eliminó el soporte para Lumen. Debería poder actualizar una aplicación Laravel de v2
a v3
sin ningún cambio de código.
En la mayoría de los casos, puede actualizar a v2
sin realizar ningún cambio o realizar solo cambios menores en su código:
Se ha cambiado resourceName
a withResourceName
.
La razón principal por la que se etiquetó v2
de este paquete es porque la versión 0.14 del Fractal subyacente de la Liga contiene cambios importantes. Si usa LeagueFractalSerializerJsonApiSerializer
en v2, la clave links
contendrá self
, first
, next
y last
.
Consulte CHANGELOG para obtener más información sobre los cambios recientes.
$ prueba de compositor
Consulte CONTRIBUCIÓN para obtener más detalles.
Si encuentra un error relacionado con la seguridad, envíe un correo electrónico a [email protected] en lugar de utilizar el rastreador de problemas.
Freek Van der Herten
Todos los contribuyentes
La Licencia MIT (MIT). Consulte el archivo de licencia para obtener más información.