含咖啡因 / presenter
Laravel 5 视图展示器
Requires
- php: >=5.5.9
- illuminate/support: 5.1.*|5.2.*
This package is auto-updated.
Last update: 2020-05-06 18:37:39 UTC
README
含咖啡因展示器
Laravel 5 视图展示器,最初是在Laracasts关于同一主题的视频教程之后开发的: 从头开始构建视图展示器。
展示器允许您在视图文件中显示任何形式的数据。一个简单的例子是,如果您有一个包含姓和名的用户实体字段,您如何在您的视图文件中简单地显示用户的完整姓名?最常见的解决方案可能是以下这样
<h1>Hello, {{ $user->first_name }} {{ $user->last_name }}!</h1>
这没问题,但是每次您需要在视图中显示用户的完整姓名时,您都必须输入这些内容。如果它像这样会怎样
<h1>Hello, {{ $user->present()->fullName }}!</h1>
这难道不是比上一个例子更易读吗?现在您可能会争辩说,您可以直接将此类逻辑添加到您的模型类中,您当然可以这样做,但那时您会发现您的模型类中充满了操作视图逻辑的方法。我不认为模型实体应该负责这项工作。它们的唯一任务是从数据库中提取所需的数据并将其传递出去。仅此而已。
快速安装
首先通过Composer安装此包。
composer require caffeinated/presenter=~2.0
就这样!拿上您的咖啡,开始构建一些出色的展示器吧!
用法
1. 引入特性
在您的模型中,只需引入Caffeinated\Presenter\Traits\PresentableTrait
特性,它将自动实例化Caffeinated展示器类。
... use Caffeinated\Presenter\Traits\PresentableTrait; class Example extends Eloquent { use PresentableTrait; ... }
2. 定义您的展示器类
定义一个受保护的$presenter
变量,指向您的展示器类的命名空间。
... use Caffeinated\Presenter\Traits\PresentableTrait; class Example extends Eloquent { use PresentableTrait; protected $presenter = 'App\Presenters\Page'; ... }
3. 创建您的展示器类
创建一个新类,如之前在模型中定义的那样 - 在我们的案例中,我们将在app
目录中创建一个名为Presenters
的新目录,并创建一个Page
文件。展示器应该扩展抽象类Caffeinated\Presenter\Presenter
。
<?php namespace App\Presenters; use Caffeinated\Presenter\Presenter; class Page extends Presenter { ... }
4. 定义您的展示器方法
您的模型实例会自动传递到您的展示器类,并通过$this->entity
访问。有了这个,您现在可以定义任意数量的展示器方法。
<?php namespace App\Presenters; use Caffeinated\Presenter\Presenter; class Page extends Presenter { public function title() { return ucwords($this->entity->title); } }
上述用法的示例将是{{ $page->present()->title }}
。