alanchang15/presenter

简单视图展示器

0.2.5 2022-02-15 04:53 UTC

This package is auto-updated.

Last update: 2024-09-28 16:46:37 UTC


README

在一些场景下,需要在显示某些数据之前执行一些逻辑(可能来自您的实体)。

  • 这个逻辑应该直接编写在视图中吗?
  • 我们应该将逻辑存储在模型中吗? 不,再次否定!

相反,利用视图展示器。这就是它们的目的!本包提供了一种这样的实现。

安装

通过 Composer 引入此包。

{
    "require": {
        "alanchang15/presenter": "0.2.*"
    }
}

用法

第一步是将您的展示器存储在某个地方 - 任何地方。这些将是简单的对象,它们所做的只是格式化所需的数据。

以下是一个展示器的示例。

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