Removendo a lógica das views com presenters no Laravel \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 11 Horas 

 31 Min 

 21 Seg 

   Tempo restante da oferta: 11 31 21 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Removendo a lógica das views com presenters no Laravel  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

# Removendo a lógica das views com presenters no Laravel

 Um dos problemas mais clássicos de aplicações que utilizam MVC é a camada de view concentrar lógica ao invés de apenas aspectos relacionados à exibição. Veremos nesse artigo como isso pode ser contornado.

 [ Elton Fonseca ](https://www.treinaweb.com.br/blog/autor/elton-fonseca) 9 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/03/07100631/VIEWS-LOGICA-LARAVEL.png)  

Um dos problemas mais clássicos de aplicações que utilizam [MVC](https://www.treinaweb.com.br/blog/o-que-e-mvc/ "MVC") é a camada de view concentrar lógica ao invés de apenas aspectos relacionados à exibição. Veremos nesse artigo como isso pode ser contornado.

Frameworks como [Laravel](https://www.treinaweb.com.br/blog/o-que-e-laravel/ "Laravel") e [Symfony](https://www.treinaweb.com.br/blog/o-que-e-symfony/ "Symfony") utilizam por padrão [template engines](https://www.treinaweb.com.br/blog/o-que-e-template-engine/ "template engines") como Blade e Twig, respectivamente. Esses template engines possuem o intuito de diminuir a complexidade das views, no entanto, nem mesmo com essa ajuda as views ficam limpas o suficiente. Existem certos tratamentos que acabam sobrecarregando as views e também não é papel do model tratar isso. É nesse ponto que entram os Presenters.

Com intuito de ajudar na solução desses problemas podemos usar essa camada extra nas nossas aplicações. O principal objetivo dela é facilitar e devolver a informação já tratada para a view, diminuindo assim a quantidade de decisões que precisamos tomar dentro de nossas views e eximindo também os models de uma responsabilidade que não é deles.

[  ![Laravel - Testes Fundamentos](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/laravel.svg)   Curso Laravel - Testes Fundamentos Conhecer o curso ](https://www.treinaweb.com.br/curso/laravel-testes-fundamentos)

## Escolhendo e instalando um Presenter

Por padrão o Laravel não possui uma camada de Presenter, precisamos instalar via Package. Existem diversos packages que fazem esse processo, alguns mais elaborados e outros mais simples. No caso do nosso exemplo vamos usar o desenvolvido por Jeffrey Way [que podemos fazer o download no packagist.org](https://packagist.org/packages/laracasts/presenter "que podemos fazer o download no packagist.org").

Basta executar o comando para o composer adicionar a dependência:

```
composer require laracasts/presenter

```

## Criando e ligando o Presenter ao Model

A ideia é que cada método trate uma única informação, para mantermos também a classe de presenter organizada. No escopo do presenter é possível acessar as propriedades do model, assim fica mais fácil tratar as informações:

```php
