Skip to content

taylornetwork/presenter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Presenter for Laravel

Adds another place to put logic for models. Instead of cluttering up models with logic to display/format data, add them to a presenter!

This is a rewrite of laracasts/Presenter with some added functionality, commands, etc.

Install

Via Composer

$ composer require taylornetwork/presenter

Setup

Add the service provider to the providers array in config/app.php

'providers' => [

    TaylorNetwork\Presenter\PresenterServiceProvider::class,

],

Publish Config

$ php artisan vendor:publish

This will add config/presenter.php where you can define the namespace you want your presenter classes to be stored.

Usage

Create a presenter using the artisan command, for example a presenter for the User model.

$ php artisan make:presenter UserPresenter

This will create a presenter class you can add logic to that you don't want in the model or the view. Model attributes are accessible via $this->model

use TaylorNetwork\Presenter\Presenter;

class UserPresenter extends Presenter
{
    /**
     * Get the user's full name
     *
     * @return string
     */
    public function fullName()
    {
        return $this->model->first_name . ' ' . $this->model->last_name;
    }

    /**
     * Get the time since the user signed up
     *
     * @return string
     */
    public function userSince()
    {
        return $this->model->created_at->diffForHumans();
    }
}

You will need to add the presentable trait and a $presenter property to your model

use TaylorNetwork\Presenter\Presentable;
use App\Presenters\UserPresenter;

class User extends Model
{
    use Presentable;

    /**
     * Presenter Class
     *
     * @var string
     */
    protected $presenter = UserPresenter::class;

    // Code
}

You can access the presenter with present()

<h1>{{ $user->present()->fullName }}, you signed up {{ $user->present()->userSince }}</h1>

Credits

License

The MIT License (MIT). Please see License File for more information.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages