Utilizando layouts no CodeIgniter
Na grande maioria dos sites e sistemas web é apenas modificado o miolo da aplicação, enquanto que o cabeçalho, rodapé, menu, etc. permanecem iguais. E utilizando o modelo MVC, normalmente para cada action do controller temos uma view correspondente, sendo que geralmente um controller: Main com uma action: index, terá a view main/index.php.
No Code Igniter teríamos que fazer tudo manualmente, já que não há como definir um layout que será carregado em cada view, nem esse carregamento automático.
Pelo menos não havia...
Criei um pequeno hook que faz esse serviço. Crie seu controller como abaixo:
-
class Main extends Controller {
-
-
function Main()
-
{
-
parent::Controller();
-
}
-
-
function index()
-
{
-
$this->data->foo = $this->db->get('main_table');
-
}
-
-
function show()
-
{
-
$this->data->foo = $this->db->get('another_table');
-
// Você pode definir manualmente a view e o layout da seguinte forma:
-
$this->view = 'main/index';
-
$this->layout = 'popup';
-
}
-
}
E ao acessar as duas actions a view main/index.php será chamada com os valores definidos na variável $this->data. Também será carregado o layout application/views/layouts/default.php na função index e application/views/layouts/popup.php na função show.
Download
Faça o download da hook ou de uma aplicação de exemplo (CI 1.6.2).
Instalação
Para utilizar este hook, copie o arquivo Layout.php dentro da pasta application/hooks/, defina a opção $config['hooks'] com true no config e adicione o seguinte no arquivo application/config/hook.php:
Espero que goste tanto de utilizar isto quanto eu. Me salva algumas linhas de código.