gathercontent / laravel-fractal by gathercontent

A Laravel Service Provider for Fractal
140,934
50
11
Package Data
Maintainer Username: gathercontent
Maintainer Contact: andrew@gathercontent.com (Andrew Cairns)
Package Create Date: 2014-06-15
Package Last Update: 2016-11-29
Home Page:
Language: PHP
License: MIT
Last Refreshed: 2024-04-25 15:18:41
Package Statistics
Total Downloads: 140,934
Monthly Downloads: 1,245
Daily Downloads: 106
Total Stars: 50
Total Watchers: 11
Total Forks: 12
Total Open Issues: 6

Laravel Fractal

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);
});