rickselby / laravel-auto-presenter-mapper
在服务提供者中定义展示器,而不是在模型中定义
v3.0.1
2018-05-14 07:31 UTC
Requires
Requires (Dev)
- graham-campbell/testbench: ^5.0
- phpunit/phpunit: ^6.0|^7.0
README
这是一个对优秀的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)授权。