Continuando a adaptação da framework Code Igniter para utilização no meu projeto, e também para utilização no meu trabalho, desta vez vou falar de como estender o Controller para sempre carregar uma visualização padrão, e inserir nela a view de conteúdo.
Como já disse anteriormente, para criar extensões das core classes do CI, devemos salvar o arquivo com na pasta application\libraries, com o prefixo MY_. Nesse caso, teremos o arquivo MY_Controller, e a classe de mesmo nome.
Vamos para o código, depois eu explico os detalhes:
class MY_Controller extends Controller
{
/**
* metodo construtor da classe
*/
function MY_Controller()
{
parent::Controller();
}
/**
* mostra a view definida utilizando uma estrutura pre-definida
* @param [str] nome da view a ser exibida
* @param [arr] array com os dados da view a ser exibida
*/
function _mostrar($nmView, $viewData)
{
$conteudo = $this->_carregarConteudo($nmView, $viewData);
$data = array(
"conteudo" => $conteudo
);
$this->load->view('estrutura', $data);
}
/**
* carrega a view a ser inserida em uma estrutura pre-definida
* @param [str] nome da view a ser inserida
* @param [arr] array com os dados da view a ser exibida
* @return [vew] objeto de View para ser incluido
*/
function _carregarConteudo($nmView, $viewData)
{
return $this->load->view($nmView, $viewData, TRUE);
}
}
Criamos o metodo _mostrar(), que deve ser utilizado nas suas classes de controle para exibir uma view (ao invés de usar $this->load->view()). O método _carregarConteudo() não é totalmente necessário para este exemplo, mas ele é responsável por carregar a view de conteúdo da sua página, ou seja, o que será inserido dentro da view geral.
Nossas classes de controle da aplicação, agora teriam funcionamento parecido ao desta:
class Meucontrole extends MY_Controller
{
function Meucontrole()
{
parent::MY_Controller();
}
function index()
{
$data = array("var" => "valor");
$this->_mostrar('minhaview', $data);
}
}
Declaramos a classe estendendo de MY_Controller, definimos o método construtor, e, no método de exibição, definimos “var” para ser utilizada na view “minhaview“, através do método _mostrar() que criamos anteriormente. Dessa forma, o conteúdo de “minhaview” será inserido na view “estrutura“, através da variável conteudo.
Este é mais um exemplo simples, que pode ser incrementado conforme suas necessidades. Pode-se criar chamadas de Menus dinâmicos, Banners de Publicidades, tudo automaticamente, sem precisar carregá-los em todo controle que você criar.
#1 by Harlley - January 3rd, 2007 at 20:00
Porque vc colocou underline na frente dos nomes dos métodos? É obrigatório colocá-lo ?
#2 by Newton Wagner - January 4th, 2007 at 10:27
Harlley, esqueci de falar sobre isso.
. Métodos, no controle, que começam com Underline significam que o usuário não pode acessar direto pela url, por exemplo: http://www.dominio.com/?controle/_metodo.