A camada view – Entendendo o padrão MVC na prática – Parte 07 Artigo

Conheça os cursos gratuitos do WebDevBr! - Inscreva-se!


Este artigo foi publicado a 2 anos, 10 meses, 3 dias atrás.

Para a camada de View do nosso framework MVC eu quero templates HTML que recebem o conteúdo de que cada action do controller com um arquivo de view exclusivo, como é em todos os outros frameworks. Também vou precisar pegar variáveis do controller para a nossa view, então vamos lá.

Vou precisar então criar um diretório aonde vou guardar meu template, ele chama "App/Templates" e já vou deixar meu primeiro tema já préviamente criado, vai ficar: "App/Templates/Default" (Default é o nome do meu tema) e dentro:

  • css/
  • js/
  • fonts/
  • index.php

Note que css, js e fonts são diretórios do Twitter Bootstrap e index.php é o nosso tema.

Gostou deste artigo?

Receba atualizações semanais com novos artigos do WebDevBr e outras dicas!

Antes de preencher o nosso tema vamos criar a nossa classe de manipulação do View em Library/Erik/Core/Master/View.php.

<?php

namespace ErikCore;

use AppCoreConfig;

class Master_View
{
    public $mvc;
    public $data = array();
    public $base_url;
    public $tema;

    public function __construct($returnMvc)
    {
        $this->mvc=$returnMvc;
        $this->base_url=$_SERVER['REQUEST_URI'];

        $config = new Config();
        $this->tema = ((isset($config->tema)) and (!empty($config->tema)))?$config->tema:'Default';

    }

    public function set($var,$value)
    {
        $this->data[$var]=$value;
    }

    public function conteudo()
    {
        extract($this->data);
        include ROOT.DS.'APP'.DS.'Modulos'.DS.$this->mvc['controller'].DS.'View'.DS.$this->mvc['action'].'.php';
    }

    public function templateUrl($string=null)
    {
        return $this->base_url.'App/Templates/'.$this->tema.'/'.$string;
    }

    public function __destruct()
    {
        include ROOT.DS.'APP'.DS.'Templates'.DS.'Default'.DS.'index.php';
        exit;
    }
}

Temos 4 atributos e 5 metodos:

Atributos:

  • $mvc - Vai receber o nosso MVC
  • $data - Vai guardar os dados vindos do controller
  • $base_url - A URL base (URL do navegador, nada haver com caminho do servidor)
  • $tema - o tema a se usar (dentro de App/Templates)

Métodos:

  • __construct() - Faz a configuração básica da camada de view incluindo os valores das variáveis e instanciando a classe Config
  • set() - Faz a intermediação dos dados do controller na view
  • conteudo() - Informa no template, aonde a view da aciton deve ser chamada
  • templateUrl() - Retorna URL (do navegador) base do tema
  • __destruct() - Carrega e imprime o template final no navegador

A classe é bem auto explicativa e neste ponto você deve ser capaz de enteder facilmente este código, não tem nenhuma novidade, no nosso __construct() verificamos em uma classe Config (ainda inexistente até a aula 10) a existencia de um atributo (variável, dã!) chamado tema ($config->tema) aonde terá o nome do tema da aplicação, se não existir ele irá inserir um valor padrão chamado 'Default' (que já criamos em App/Templates/Default).

Sabemos então que teremos uma classe de configurações aonde iremos informar o tema, ele irá guardar os dados de conexão ao banco de dados também.

Nos próximos dois artigo iremos falar um pouco sobre o banco de dados. e finalizar o core do nosso framework, até lá.

Não esqueça de se cadastrar na Newsletter na lateral direita (—>>>>) para saber quando o próximo artigo vai sair.

Aqui os arquivos desta aula (não esqueça de renomear o arquivo View (dentro de Library/Erik/Core/Master/) para View.php) e o estudo completo.


Cursos relacionados


* Parcelamento apenas cartão de crédito! Pode haver uma pequena variação no parcelamento em relação a simulações apresentadas!