gathercontent / laravel-fractal
A Laravel Service Provider for Fractal
1.0.1
2016-11-29 14:39 UTC
Requires
- php: >=5.3.0
- league/fractal: ~0.8
Requires (Dev)
- illuminate/support: 4.1.*
This package is not auto-updated.
Last update: 2024-12-18 13:33:45 UTC
README
A Laravel Service Provider for League/Fractal.
Installation
Add laravel-fractal to your composer.json file:
"require": { "gathercontent/laravel-fractal": "~1.0" }
Get composer to install the package:
$ composer require gathercontent/laravel-fractal
Registering the Package
Register the service provider within the providers
array found in app/config/app.php
:
'providers' => array( // ... GatherContent\LaravelFractal\LaravelFractalServiceProvider::class )
Add an alias within the aliases
array found in app/config/app.php
:
'aliases' => array( // ... 'Fractal' => GatherContent\LaravelFractal\LaravelFractalFacade::class, )
Configuration
To override the default configuration, you can publish the config files to your application. Artisan can do this automatically for you via the command line:
$ php artisan vendor:publish
Usage
Basic Example
Formatting a single item:
// routes.php Route::get('/me', array('before' => 'auth', function () { return Fractal::item(Auth::user(), new UserTransformer); }));
Formatting a collection:
// routes.php Route::get('/comments', function () { return Fractal::collection(Comment::all(), new CommentTransformer); });
Adding meta data:
// routes.php Route::get('/comments', function () { return Fractal::collection(Comment::all(), new CommentTransformer, function ($resources) { $resources->setMetaValue('foo', 'bar'); }); });
Returning a paginated collection:
// routes.php Route::get('/comments', function () { return Fractal::collection(Comment::paginate(), new CommentTransformer); });
Using a custom pagination adapter:
// routes.php Route::get('/comments', function () { $comments = Comment::paginate(); $adapter = new MyIlluminatePaginationAdapter($comments); return Fractal::collection($comments, new CommentTransformer, null, $adapter); });