redsquareweb / laravel-view-presenter
简单的视图展示器
dev-master
2016-06-01 17:18 UTC
Requires
- php: >=5.4.0
- illuminate/support: 5.*
Requires (Dev)
- mockery/mockery: ~0.9
- phpspec/phpspec: ~2.0
This package is not auto-updated.
Last update: 2024-09-23 13:28:37 UTC
README
从Jeffry Way的视图展示器中分支而来。
修复了与Laravel 5.1和5.2的一些兼容性问题。
所以你有那些场景,需要在数据(可能来自你的实体)显示到视图之前执行一些逻辑。
- 这个逻辑是否应该硬编码到视图中?不。
- 我们应该把逻辑存储在模型中吗?再不!
相反,利用视图展示器。这正是它们存在的意义!此包提供了一个这样的实现。
安装
通过Composer安装此包。
{ "require": { "redsquareweb/presenter": "dev-master" } }
用法
第一步是将您的展示器存储在某个地方——任何地方。这些将是非常简单的对象,它们所做的只是按照要求格式化数据。
这里有一个展示器的例子。
use RedSquareWeb\Presenter\Presenter; class UserPresenter extends Presenter { public function fullName() { return $this->first . ' ' . $this->last; } public function accountAge() { return $this->created_at->diffForHumans(); } }
接下来,在您的实体上引入RedSquareWeb\Presenter\PresentableTrait特质,这将自动实例化您的展示器类。
这里有一个例子——可能是一个Laravel User模型。
<?php use RedSquareWeb\Presenter\PresentableTrait; class User extends \Eloquent { use PresentableTrait; protected $presenter = 'UserPresenter'; }
就是这样!你已经完成了。现在,在您的视图中,您可以这样做
<h1>Hello, {{ $user->present()->fullName }}</h1>
注意,调用present()方法(它将返回您的新或缓存的展示器对象)也提供了这样的好处,即在您需要修改页面上显示的全名时,可以清楚地知道必须去哪里。
祝您玩得开心!
Christian @ https://redsquareweb.com