rickselby/laravel-auto-presenter-mapper

在服务提供者中定义展示器,而不是在模型中定义

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

This package is auto-updated.

Last update: 2024-09-03 17:38:59 UTC


README

Software License Packagist Version

这是一个对优秀的laravel-auto-presenter的扩展,允许你在服务提供者或即时定义展示器,而不是直接在模型上定义。

兼容性图表

安装

使用Composer安装项目

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

Laravel 5.5+ 将自动发现此包。

对于Laravel 5.1-5.4,你应该只添加此服务提供者,而不是原始的laravel-auto-presenter服务提供者,因为此服务提供者是它的扩展。

在你的config/app.php中,将此行添加到你的'providers'数组...

RickSelby\LaravelAutoPresenterMapper\AutoPresenterMapperServiceProvider::class,

...以及此行添加到你的'facades'数组。

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

使用方法

有关基本用例,请参阅github.com/laravel-auto-presenter/laravel-auto-presenter中的文档。

使用此包,你不需要修改模型来实现HasPresenter,而是可以使用外观在服务提供者中定义展示器。例如

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

这将与laravel-auto-presenter完全一样工作;任何传递给视图的User模型都将被包装在UserPresenter中。

map函数也接受一个数组

public function register()
{
    \Presenters::map([
        User::class => UserPresenter::class,
        ...
    ]);
}

如果你想在即时声明映射或覆盖特定实例中的映射,可以从任何地方调用外观

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

可装饰

要模仿父包的Decoratable接口,你可以调用decoratable

public function register()
{
    \Presenters::decorate(User::class);
    \Presenters::decorate([
        User::class,
        ...
    ]);
    ...
}

许可证

Laravel Auto Presenter Mapper 根据MIT许可证(MIT)授权。