You can create a% control_controller class that extends the CodeIgniter MY_Controller
class and then make all your controllers extend to your custom class. The logic is to create a base file that has everything that will repeat on every page of your site, ie static content (eg headers, menus and footers), this base file I call CI_Controller
. From then on, every time you call a new page, the v_base
would be fired and within that file, it would be called its content.
In this custom class, you would have more or less the following configuration:
class MY_Controller extends CI_Controller {
private $dadosPagina; // Informações (variáveis) que serão usados na página carregada
private $v_base; // Arquivo base da interface (menus fixos, cabeçalho e rodapé da página)
public function __construct() {
parent::__construct();
$this->dadosPagina = array();
$this->v_base = array();
}
/**
* Adiciona dados à página que será carregada, como variáveis
* @param String $nome Identificador da variável
* @param String $valor Valor a ser usado a partir da chamada de seu identificador
*/
protected function addDadosPagina($nome, $valor) {
$this->dadosPagina[$nome] = $valor;
}
/**
* Adiciona um título à página que será carregada
* @param String $valor Título para a página
*/
protected function addTituloPagina($valor) {
$this->dadosPagina['tituloPagina'] = $valor;
}
/**
* Carrega uma página do site
* @param String $pagina Caminho do arquivo da página (path) (sem a extensão)
*/
protected function mostrarPagina($pagina) {
$this->v_base['conteudo'] = $this->load->view($pagina, $this->dadosPagina, true);
$this->load->view('v_base', $this->v_base);
$this->dadosPagina = array(); // zerar atributo dadosPagina
$this->v_base = array(); // zerar atributo v_base
}
}
Calling these functions would look like this:
class Paginas_Usuarios extends MY_Controller {
public function __construct() {
parent::__construct();
}
/**
* Carregar página de cadastro de usuário.
*/
public function cadastrar_usuario() {
$this->addTituloPagina('Cadastro de Usuário');
$this->mostrarPagina('usuario/v_cadastrar');
}
}