ahmed-aliraqi / presenter
简单的视图演示者
v1.0.0
2022-02-12 19:19 UTC
Requires
- php: >=5.4.0
- illuminate/support: ~5.0|~6.0|~7.0|~8.0|~9.0
Requires (Dev)
- mockery/mockery: ~0.9
- phpspec/phpspec: ~2.0
README
所以你会有这样的场景,在数据(可能是你的实体)从视图显示之前,需要执行一些逻辑。
- 这个逻辑应该硬编码到视图中吗?不。
- 我们应该将逻辑存储在模型中吗?再不!
相反,利用视图演示者。这就是它们的作用!这个包提供了一个这样的实现。
安装
通过Composer引入这个包。
{ "require": { "ahmed-aliraqi/presenter": "^1.0" } }
使用方法
第一步是将你的演示者存储在某个地方 - 任何地方。这些将是非常简单的对象,除了格式化数据外不做其他任何事情。
这是一个演示者的例子。
use Laracasts\Presenter\Presenter; class UserPresenter extends Presenter { public function fullName() { return $this->first . ' ' . $this->last; } public function accountAge() { return $this->created_at->diffForHumans(); } }
接下来,在你的实体上引入 Laracasts\Presenter\PresentableTrait
特性,这将自动实例化你的演示者类。
这是一个例子——可能是一个Laravel User
模型。
<?php use Laracasts\Presenter\PresentableTrait; class User extends \Eloquent { use PresentableTrait; protected $presenter = 'UserPresenter'; }
这就完成了!现在,在你的视图中,你可以这样做
<h1>Hello, {{ $user->present()->fullName }}</h1>
注意调用 present()
方法(它将返回你的新或缓存的演示者对象)同时也提供了好处,使得修改如何在页面上显示全名的修改变得非常清晰。
祝您玩得开心!
Jeffrey @ https://laracasts.com