Padrão MVC no Codeigniter

Neste artigo vamos falar sobre as views do CodeIgniter. O CodeIgniter é baseado no modo de desenvolvimento Model-View-Controller. A MVC é uma abordagem de software que realiza a separação da lógica da aplicação de sua apresentação. Na prática, permite que nossas páginas web contenham o mínimo de script, já que a apresentação é separada do PHP.

View: É a informação que será apresentada ao usuário. A view normalmente é uma página web, mas no CodeIgniter, uma view pode ser também um fragmento de página, como um cabeçalho ou rodapé. Ela pode ser também uma página RSS, ou qualquer outro tipo de página.

No CodeIgniter as views não são chamadas diretamente, elas necessitam ser chamadas por um controller. Devemos lembrar que em um framework MVC, o controller atua como um guarda de trânsito, sendo responsável por controlar o tráfego de dados e chamar a view, quando necessário. Para este artigo usaremos o seguinte CONTROLLER como base.

Controller Modelo

Não podemos esquecer que todos os controllers tem que ser salvos no diretório “application/controller” ou em subpastas. Vamos supor que nosso controller vai ter o seguinte nome: “inicial.php”.

Listagem 1: Controller Modelo


<?php
class Inicial extends CI_Controller { 
  
 function index()
  {
   echo "Nosso Controller modelo"
  }
}
?>

Criando uma view

Vamos criar uma view chamada viewprincipal.php e colocar o seguinte conteúdo.

Listagem2: Criando View


<html>
 <head>
  <title>Primeira View</title>
 </head>
 <body> 
  <h1> Nossa primeira view </h1>
 </body>
</html> 

Todas as views devem ser salvas no diretório application/views ou em subpastas.

Carregando uma View

Para carregarmos uma view especifica, devemos utilizar a seguinte função

$this->load->view(‘nome-da-view’);

Nome-da-view: é o nome do nosso arquivo view, a extensão .php não precisa ser especificada a menos que desejemos utilizar outra coisa além dela.

Agora para vermos isso em funcionamento vamos abrir nosso controller inicial.php e carregar a view que acabamos de criar.

Listagem 3: Carregando view no Controller


<?php
class Inicial extends CI_Controller { 
  
 function index()
  {
   $this->load->view('viewprincipal');
  }
}
?>

E agora acessando nosso site como acessamos normalmente, obteremos o seguinte resultado.

Resultado primeira view
Figura 1: Resultado primeira view

Carregando Múltiplas Views

Para carregarmos várias views, basta chamarmos uma por linha e o CodeIgniter faz a montagem em uma só exibição. Vejamos a sintaxe

Listagem 4: Múltiplas views sendo carregadas


<?php
class Inicial extends CI_Controller { 
  
function index()
 {
   $this->load->view('viewcabecalho');
   $this->load->view('viewcorpo');
   $this->load->view('viewrodape');
  }
}
?>

Nesse exemplo, estamos carregando três views: uma para o cabeçalho, uma para o corpo e uma para o rodapé.

Views em subdiretório

Nossas views podem também ser organizadas dentro de subdiretórios, se assim desejarmos. Para isso, será preciso incluir o nome de diretório no carregamento das views. Da seguinte maneira.

$this->load->view(‘nome-do-diretorio/nome-da-view’);

Adicionando dados dinâmicos em uma View

Os dados serão passados do controller para a view através de um array ou de um objeto no segundo parâmetro da função de carregamento da view. Vejamos como isso é feito.

Listagem 5: Utilizando Array


$data = array(
    'title'   => 'Sobre',
    'content' => 'Texto da página sobre',
);
 
$this->load->view('nome-da-view', $data);

Listagem 6: Utilizando objeto


$Data = new ClasseQualquer();
$this->load->view(‘nome-da-view’, $Data);

Caso utilizemos esse modo, as variáveis da classe serão transformadas em elementos de um array.

Agora vamos fazer um exemplo disso para entendermos melhor o funcionamento.

Abra nosso controller e coloque as seguintes linhas, como mostrado a seguir.

Listagem 7: Inserindo dados dinâmicos na view


<?php
class Inicial extends CI_Controller { 
  
  function index()
   {
    $data['title'] = "Nosso titulo";
    $data['heading'] = "Nosso cabeçalho.";
  
    $this->load->view('viewprincipal', $data);
   }
}
?>

Agora vamos abrir nosso arquivo view e alterar o texto para as variáveis que correspondem às chaves (Keys) do array, da seguinte maneira.

Listagem 8: Mudando dados na view


<html>
 <head>
  <title><?php echo $title;?></title>
 </head>
 <body>
  <h1><?php echo $heading;?></h1>
 </body>
</html>

Agora vamos carregar a página usando a URL costumeira e veremos que as variáveis serão substituídas pelos textos configurados dentro do arquivo controller.

Resultado inserção de dados dinâmico na View
Figura 2: Resultado inserção de dados dinâmico na View

Criando Loop

O array de dados que passamos aos nossos arquivos view não são limitados a simples variáveis. Podemos passar arrays multidimensionais, que podem se repetir em loop para gerar múltiplas linhas. Por exemplo, se puxarmos alguma informação de nosso banco de dados, ela geralmente virá na forma de um array multidimensional. Vamos criar um exemplo de loop.

Vamos abrir nosso controller e por o seguinte código nele, conforme abaixo.

Listagem 9: Criando loop


<?php
class Inicial extends CI_Controller { 
  
 function index()
  {
   $data['title'] = "Nosso titulo";
   $data['heading'] = "Nosso cabeçalho.";
   $data['artigos'] = array ('Front-End', 'PHP/SQL', 'FRAMEWORK');
  
   $this->load->view('viewprincipal', $data);
  }
}
?>

Agora vamos abrir o nosso arquivo view para criarmos nosso loop, coloque o seguinte código conforme mostrado abaixo.

Listagem 10: Configurando loop na view


<html>
 <head>
  <title><?php echo $title;?></title>
 </head>
 <body>
  <h1><?php echo $heading;?></h1>
  <h3> Lista de temas </h3>
  <ul>
    <?php foreach($artigos as $item): ?>
      <li><?php echo $item ?></li>
    <?php endforeach ?>
  </ul>
 </body>
</html>
Resultado do loop
Figura 3: Resultado do loop

Assim concluimos esse artigo, isso não é tudo o que se tem para sabermos sobre views, mas esse básico sobre view, juntamente com os outros conteúdos sobre CodeIgniter sugeridos a seguir, nos transfere uma noção bem agradável sobre o porte que o CodeIgniter possui. Espero que o tema tenha sido de agrado e entendimento de todos os leitores.

Abraços a todos e até ao próximo artigo.

Links Úteis

Saiba mais sobre PHP ;)

  • Introdução ao framework PHP CodeIgniter:
    Veja neste artigo uma breve apresentação e introdução ao framework PHP CodeIgniter, que trabalha sobre o modelo MVC e nos fornece diversas ferramentas para agilizar o desenvolvimento das aplicações.
  • Trabalhando com controllers no CodeIgniter:
    Veja neste artigo como funcionam os controllers no framework PHP CodeIgniter, como criar seus controllers e funções.
  • Utilizando templates no CodeIgniter:
    Aprenda como criar e utilizar templates com o framework CodeIgniter e simplifique a construção e o reuso de páginas em suas aplicações.