Skip to content

Latest commit

 

History

History
53 lines (36 loc) · 2.08 KB

transformers.md

File metadata and controls

53 lines (36 loc) · 2.08 KB

Transformers

In components such as Data and Form, you may want to pass PHP objects to the frontend. The most common example is an Eloquent Model. Though you may hide sensitive attributes from being passed to the frontend, and though the Form Components have built-in support to guard Model attributes, you may also choose to use a Transformer.

Splade makes it very easy to define a Transformer once, and use it throughout the application in the Data, Defer, Form, and Bridge Components. It supports Eloquent API Resources, Fractal Transformers, and a simple closure.

Transform using an Eloquent Resource Class

Configuring a Transformer is as easy as calling the transformUsing method on the Splade facade, for example, in the AppServiceProvider class:

Splade::transformUsing(User::class, UserResource::class);

Pass multiple transformers

Instead of calling the transformUsing methods multiple times, you may also pass an array:

Splade::transformUsing([
    Team::class => TeamResource::class,
    User::class => UserResource::class,
]);

Fallback and Enforcement

When no Transformer has been configured, Splade won't transform the given data and passes it untouched. If you want to enforce using Transformers, and protect against missing Transformers, you may call the requireTransformer method on the Splade facade:

Splade::requireTransformer();

Transform using a Fractal Transformer

To use Fractal Transformers, you need to install the spatie/fractalistic package.

Splade::transformUsing(User::class, UserTransformer::class);

Transform using a Closure

For simple transformations, you may pass a closure:

Splade::transformUsing(User::class, function ($user) {
    return [
        'name'  => $user->name,
        'email' => $user->email,
    ];
});