含咖啡因/presenter

此包已被弃用且不再维护。未建议替代包。

Laravel 5 视图展示器

v2.1 2016-02-25 22:12 UTC

This package is auto-updated.

Last update: 2020-05-06 18:37:39 UTC


README

含咖啡因展示器

Laravel 5.1 Laravel 5.2 Source License

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 }}