ahmed-aliraqi/presenter

简单的视图演示者

v1.0.0 2022-02-12 19:19 UTC

This package is auto-updated.

Last update: 2024-09-13 02:08:26 UTC


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