cheap dedicated servers

Newton Wagner se desenvolvendo na web

15Dec/062

Code Igniter: Estendendo o Controller

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.

Artigos Relacionados:

Comments (2) Trackbacks (2)
  1. Porque vc colocou underline na frente dos nomes dos métodos? É obrigatório colocá-lo ?

  2. 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.


Leave a comment

(required)