Le package fournit un wrapper simple et agréable autour de Fractal à utiliser dans vos applications Laravel. Si vous ne savez pas ce que fait Fractal, jetez un œil à leur intro. En bref, Fractal est très utile pour transformer des données avant de les utiliser dans une API.
L'utilisation des données fractales peut être transformée comme ceci :
utiliser LeagueFractalManager;utiliser LeagueFractalResourceCollection;$books = [ ['id' => 1, 'title' => 'Hogfather', 'characters' => [...]], ['id' => 2, 'title' => 'Game Of Kill Everyone', 'characters' => [...]] ];$manager = new Manager();$resource = new Collection($books, new BookTransformer());$manager->parseIncludes('characters');$manager->createData($resource)->toArray() ;
Ce package rend ce processus un peu plus facile :
fractale() ->collection ($livres) ->transformWith(nouveau BookTransformer()) ->includeCharacters() ->toArray();
Les amateurs de façades seront heureux de savoir qu'une façade est prévue :
Fractal::collection($books)->transformWith(new BookTransformer())->toArray();
Il existe également une syntaxe très courte disponible pour transformer rapidement les données :
fractale ($ livres, new BookTransformer ()) -> toArray ();
Vous pouvez également transformer directement à partir d’une collection Laravel :
collect($books)->transformWith(new BookTransformer());
Transformer directement à partir d'une collection Laravel est particulièrement utile pour les résultats Eloquent :
Utilisateurs ::all()->transformWith(new UserTransformer())->toArray();
Spatie est une agence de webdesign basée à Anvers, en Belgique. Vous trouverez un aperçu de tous nos projets open source sur notre site Internet.
Nous investissons beaucoup de ressources dans la création des meilleurs packages open source de leur catégorie. Vous pouvez nous soutenir en achetant l'un de nos produits payants.
Nous apprécions grandement que vous nous envoyiez une carte postale de votre ville natale, mentionnant le(s) forfait(s) que vous utilisez. Vous trouverez notre adresse sur notre page contact. Nous publions toutes les cartes postales reçues sur notre mur virtuel de cartes postales.
Vous pouvez extraire le package via composer :
le compositeur nécessite spatie/laravel-fractal
Le package s’enregistrera automatiquement.
Si vous souhaitez modifier le sérialiseur par défaut, le paginateur par défaut ou la classe fractale par défaut SpatieFractalFractal
vous devez publier le fichier de configuration :
Vendeur artisanal php :publish --provider="SpatieFractalFractalServiceProvider"
Si vous effectuez une mise à niveau vers Laravel 5.5, le fichier de configuration existant doit être renommé de laravel-fractal.php en fractal.php
Voici le contenu du fichier publié :
return [/* * Le sérialiseur par défaut à utiliser lors de l'exécution d'une transformation. Il * peut être laissé vide pour utiliser celui par défaut de Fractal. Il peut s'agir d'une chaîne * ou d'une sous-classe LeagueFractalSerializerSerializerAbstract. */'default_serializer' => '',/* Le paginateur par défaut à utiliser lors de l'exécution d'une transformation. Il * peut être laissé vide pour utiliser celui par défaut de Fractal. Il peut s'agir d'une chaîne * ou d'une sous-classe LeagueFractalPaginatorPaginatorInterface. */'default_paginator' => '',/* * LeagueFractalSerializerJsonApiSerializer utilisera cette valeur * comme préfixe pour les liens générés. Définissez sur « null » pour désactiver cela. */'base_url' => null,/* * Si vous souhaitez remplacer ou étendre l'instance par défaut de SpatieFractalFractal *, fournissez le nom de la classe que vous souhaitez utiliser. */'fractal_class' => SpatieFractalFractal::class,'auto_includes' => [/* * Si activé, Fractal ajoutera automatiquement les inclusions dont * les noms sont présents dans le paramètre de requête `include`. */'enabled' => true,/* * Le nom de la clé dans la requête où nous devons rechercher les inclusions à inclure. */'request_key' => 'inclure', ],'auto_excludes' => [/* * Si activé, Fractal ajoutera automatiquement les exclusions dont * les noms sont présents dans le paramètre de requête `exclude`. */'enabled' => true,/* * Le nom de la clé dans la requête où nous devons rechercher les exclusions à exclure. */'request_key' => 'exclure', ],'auto_fieldsets' => [/* * Si activé, Fractal ajoutera automatiquement les ensembles de champs dont * les noms sont présents dans le paramètre de requête `fields`. */'enabled' => true,/* * Le nom de la clé dans la requête, où nous devons rechercher les ensembles de champs à analyser. */'request_key' => 'champs', ], ];
Reportez-vous à la documentation de spatie/fractalistic
pour connaître toutes les méthodes fournies par ce package.
Dans tous les exemples de code, vous pouvez utiliser fractal()
au lieu de Fractal::create()
.
Pour renvoyer une réponse avec des données json, vous pouvez le faire dans une application Laravel.
$books = fractal($books, new BookTransformer())->toArray();return réponse()->json($books);
La méthode respond()
sur la classe Fractal peut rendre ce processus un peu plus rationalisé.
return fractal($books, new BookTransformer())->respond();
Vous pouvez transmettre un code de réponse comme premier paramètre et éventuellement des en-têtes comme second
return fractal($books, new BookTransformer())->respond(403, ['a-header' => 'une valeur','another-header' => 'une autre valeur', ]);
Vous pouvez transmettre les options d'encodage json comme troisième paramètre :
return fractal($books, new BookTransformer())->respond(200, [], JSON_PRETTY_PRINT);
Vous pouvez également définir le code d'état et les en-têtes à l'aide d'un rappel :
utilisez IlluminateHttpJsonResponse;return fractal($books, new BookTransformer())->respond(function(JsonResponse $response) {$response->setStatusCode(403) ->header('un en-tête', 'une valeur') ->withHeaders(['another-header' => 'une autre valeur','encore-un autre-en-tête' => 'encore une autre valeur', ]); });
Vous pouvez ajouter des méthodes à la classe Fractal en utilisant le trait Macroable de Laravel. Imaginez que vous souhaitiez ajouter quelques statistiques aux métadonnées de votre requête, vous pouvez le faire sans encombrer votre code :
utilisez SpatieFractalFractal ; Fractal::macro('stats', function ($stats) {// transforme les statistiques transmises si nécessaire icireturn $this->addMeta(['stats' => $stats]); });fractal($books, new BookTransformer())->stats(['runtime' => 100])->respond();
Vous pouvez exécuter la commande make:transformer
pour générer rapidement un transformateur factice. Par défaut, il sera stocké dans le répertoire appTransformers
.
Renommez votre fichier de configuration de laravel-fractal
en fractal
v3
a été introduite pour remplacer le league/fractal
par spatie/fractalistic
. La prise en charge de Lumen a été abandonnée. Vous devriez pouvoir mettre à niveau une application Laravel de v2
vers v3
sans aucune modification de code.
Dans la plupart des cas, vous pouvez simplement passer à v2
sans apporter de modifications ou seulement des modifications mineures à votre code :
resourceName
a été renommé withResourceName
.
La principale raison pour laquelle v2
de ce package a été étiquetée est que la v0.14 du Fractal sous-jacent de la Ligue contient des changements radicaux. Si vous utilisez LeagueFractalSerializerJsonApiSerializer
dans la v2, la clé links
contiendra self
, first
, next
et last
.
Veuillez consulter CHANGELOG pour plus d'informations sur ce qui a changé récemment.
$ test du compositeur
Veuillez consulter CONTRIBUER pour plus de détails.
Si vous avez trouvé un bug concernant la sécurité, veuillez envoyer un mail à [email protected] au lieu d'utiliser le suivi des problèmes.
Freek Van der Herten
Tous les contributeurs
La licence MIT (MIT). Veuillez consulter le fichier de licence pour plus d'informations.