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… :D
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:
$hook['post_controller'][] = array(
'class' => 'Layout',
'function' => 'view',
'filename' => 'Layout.php',
'filepath' => 'hooks',
'params' => array()
);
Espero que goste tanto de utilizar isto quanto eu. Me salva algumas linhas de código.
