gergonzalez / lumen-fractal
League Fractal Wrapper
Installs: 57
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 2
Forks: 0
Open Issues: 0
Type:laravel-package
Requires
- php: >=5.6.4
- league/fractal: ^0.15.0
This package is not auto-updated.
Last update: 2024-05-20 12:21:39 UTC
README
This package provides an easy way to use Fractal in Lumen.
Fractal provides a presentation and transformation layer for complex data output, the like found in RESTful APIs.
Getting Started
Prerequisites
- Lumen <= 5.4
- Lumen > 5.4 - Not tested yet
Installation
Pull it via composer:
composer require gergonzalez/lumen-fractal
Once installed, register the service provider in your bootstrap/app.php
//Register Service Providers $app->register(Gergonzalez\Fractal\FractalServiceProvider::class);
Usage
Implement your transformers, add a folder at app/Http/Transformers and put them there.
For example, UserTransformer.php:
namespace App\Http\Transformers; use League\Fractal\TransformerAbstract; use App\User; class UserTransformer extends TransformerAbstract { protected $availableIncludes = [ ]; protected $defaultIncludes = [ ]; /** * Turn User object into a generic array. * * @return array */ public function transform(User $user) { return [ 'id' => $user->id, 'email' => $user->email, ]; } }
And then, at your controller, if you retrieve only one item:
use App\Http\Transformers\UserTransformer; class UserController extends Controller { public function show(Request $request, $userId) { $user = User::findOrFail($userId); return response()->json(app('fractal')->item($user, new UserTransformer())->getArray()); } }
Or a collection:
use App\Http\Transformers\UserTransformer; class UserController extends Controller { public function index(Request $request) { return response()->json(app('fractal')->collection(User::all(), new UserTransformer())->getArray()); } }
You can also use includes, defaults, etc. WIP docs.
If you need a real example of use, you can check here
License
The MIT License (MIT). Please see License File for more information.