Define presenters in a service provider rather than in the model

v3.0.1 2018-05-14 07:31 UTC

This package is auto-updated.

Last update: 2023-05-09 20:26:39 UTC


Software License Packagist Version

This is an extension to the excellent laravel-auto-presenter that allows you to define presenters in a service provider or on-the-fly, rather than directly on the model.

Compatibility Chart

Laravel Auto Presenter Mapper laravel-auto-presenter
3.x 7.x
2.x 6.x
1.x 5.x


Require the project using Composer:

$ composer require rickselby/laravel-auto-presenter-mapper

Laravel 5.5+ will auto-discover the package.

For Laravel 5.1-5.4, you should only add this service provider, not the original laravel-auto-presenter service provider, as this one extends it.

In your config/app.php add this line to your 'providers' array...


... and this line to your 'facades' array.

'Presenters' => \RickSelby\LaravelAutoPresenterMapper\Facades\AutoPresenterMapperFacade::class,


Read the docs at github.com/laravel-auto-presenter/laravel-auto-presenter for the basic use cases.

With this package, instead of altering your models to implement HasPresenter, you can define the presenters in a service provider using the facade. For example:

public function register()
    \Presenters::map(User::class, UserPresenter::class);

This will work exactly how the laravel-auto-presenter works; any User models passed to a view will be wrapped in UserPresenter.

The map function also takes an array:

public function register()
        User::class => UserPresenter::class,

If you wish to declare a mapping on-the-fly, or override a mapping in a specific instance, the facade can be called from anywhere:

public function show(User $user)
    \Presenters::map(User::class, UserJSONPresenter::class);


To mimic the Decoratable interface of the parent package, you can call decoratable:

public function register()


Laravel Auto Presenter Mapper is licensed under The MIT License (MIT).