2017 © Pedro Peláez
 

library presenter

Easy view presenters for Analogue ORM

image

analogue/presenter

Easy view presenters for Analogue ORM

  • Wednesday, February 22, 2017
  • by RemiCollin
  • Repository
  • 3 Watchers
  • 4 Stars
  • 490 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 10 Versions
  • 11 % Grown

The README.md

Analogue Presenter

Based heavily on Jeffrey Way's Easy View Presenters for Laravel, (*1)

So you have those scenarios where a bit of logic needs to be performed before some data (likely from your entity) is displayed from the view., (*2)

  • Should that logic be hard-coded into the view? No.
  • Should we instead store the logic in the model? No again!

Instead, leverage view presenters. That's what they're for! This package provides one such implementation., (*3)

Install

Pull this package in through Composer., (*4)

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

Usage

The first step is to store your presenters somewhere - anywhere. These will be simple objects that do nothing more than format data, as required., (*5)

Here's an example of a presenter., (*6)

use Analogue\Presenter\Presenter;

class UserPresenter extends Presenter {

    public function fullName()
    {
        return $this->entity->first . ' ' . $this->entity->last;
    }

    public function accountAge()
    {
        return $this->entity->created_at->diffForHumans();
    }

}

Next, on your entity, pull in the Analogue\Presenter\Presentable trait., (*7)

Here's an example - maybe an Analogue User entity., (*8)

<?php

use Analogue\ORM\Entity;
use Analogue\Presenter\Presentable;

class User extends Entity {

    use Presentable;
}

Then, add a public $presentable property to the relevant entity map:, (*9)

<?php

use Analogue\ORM\EntityMap;

// the UserPresenter class we created above
use App\Http\Presenters\UserPresenter;

class UserMap extends EntityMap
{
    public $presenter = UserPresenter::class;

    // ...
}

That's it! You're done. Now, within your controller/view, you can do:, (*10)

// in some controller
return view("user", ["user" => $user->present()]);
<h1>Hello, {{ $user->fullName() }}</h1>

The Presenter will also pass through any calls to entity properties: e.g. $user->present()->first() would return the $user->first property - this is useful if you pass the presenter, rather than the entity, into your template., (*11)

Laravel Integration

There is also a PresentBladeServiceProvider included for use with Laravel and the Blade templating language., (*12)

This adds a @presenteach and @endpresenteach directive, which allows you to easily iterate over the presenters for each entity in a collection:, (*13)

// config/app.php
'providers' => [
    // ...
    Analogue\Presenter\PresentBladeServiceProvider::class,
]
<ul>
@presenteach ($users as $user)
    <li>{{ $user->fullName() }}</li>
@endpresenteach
</ul>

The Versions

22/02 2017

dev-master

9999999-dev https://github.com/analogueorm/presenter

Easy view presenters for Analogue ORM

  Sources   Download

MIT

The Requires

 

The Development Requires

by Mark Wales

orm laravel repository entity mapper datamapper presenter view-models

22/02 2017

5.3

5.3.0.0 https://github.com/analogueorm/presenter

Easy view presenters for Analogue ORM

  Sources   Download

MIT

The Requires

 

The Development Requires

by Mark Wales

orm laravel repository entity mapper datamapper presenter view-models

22/02 2017

5.4

5.4.0.0 https://github.com/analogueorm/presenter

Easy view presenters for Analogue ORM

  Sources   Download

MIT

The Requires

 

The Development Requires

by Mark Wales

orm laravel repository entity mapper datamapper presenter view-models

22/02 2017

dev-develop

dev-develop https://github.com/analogueorm/presenter

Easy view presenters for Analogue ORM

  Sources   Download

MIT

The Requires

 

The Development Requires

by Mark Wales

orm laravel repository entity mapper datamapper presenter view-models

22/02 2017

0.2.3

0.2.3.0 https://github.com/analogueorm/presenter

Easy view presenters for Analogue ORM

  Sources   Download

MIT

The Requires

 

The Development Requires

by Mark Wales

orm laravel repository entity mapper datamapper presenter view-models

22/02 2017

0.2.2

0.2.2.0 https://github.com/analogueorm/presenter

Easy view presenters for Analogue ORM

  Sources   Download

MIT

The Requires

 

The Development Requires

by Mark Wales

orm laravel repository entity mapper datamapper presenter view-models

18/07 2016

0.2.1

0.2.1.0 https://github.com/analogueorm/presenter

Easy view presenters for Analogue ORM

  Sources   Download

MIT

The Requires

 

The Development Requires

by Mark Wales

orm laravel repository entity mapper datamapper presenter view-models

13/07 2016

0.2.0

0.2.0.0 https://github.com/analogueorm/presenter

Easy view presenters for Analogue ORM

  Sources   Download

MIT

The Requires

 

The Development Requires

by Mark Wales

orm laravel repository entity mapper datamapper presenter view-models

11/07 2016

0.1.1

0.1.1.0 https://github.com/smallhadroncollider/analogue-orm-presenter

Easy view presenters for Analogue ORM

  Sources   Download

MIT

The Requires

 

The Development Requires

by Mark Wales

orm laravel repository entity mapper datamapper presenter view-models

11/07 2016

0.1.0

0.1.0.0 https://github.com/smallhadroncollider/analogue-orm-presenter

Easy view presenters for Analogue ORM

  Sources   Download

MIT

The Requires

 

The Development Requires

by Mark Wales

orm laravel repository entity mapper datamapper presenter view-models