desenvolvimento com codeigniter
TRANSCRIPT
Desenvolvimento com Codeigniter
Olá, hoje irei explicar como configurar (ao menos como eu uso) uma instalação básica
do Codeigniter pronta para desenvolver a sua aplicação.
O que iremos fazer
Neste primeiro tutorial, iremos criar um template, de modo que você não repetirá mais
conteúdo desnecessário (Don‟t repeat yourself), como cabeçalhos e rodapés.
Ao final desse tutorial você terá uma aplicação que:
Terá uma página de template, que carregará suas views dinamicamente.
O título da página também será trocado dinamicamente.
Poderá facilmente fazer alterações futuras no template, ou até mesmo criar
outro, e alterar somente uma linha para usar o novo, podendo depois voltar para
os antigos.
Conhecimentos
Esse tutorial assume que você já tem algum conhecimento sobre como funciona a
estrutura MVC. Se você não sabe o que é ou como funciona, leia esse artigo antes de
iniciar.
Também já deve ter tido alguma experiência com o framework. Se você sabe como
funciona MVC mas nunca usou o Codeigniter, recomendo assistir essa vídeo-aula.
1 – Nova Instalação do Codeigniter
Faça o download do framework em http://codeigniter.com/downloads/. Descompacte-o
em sua pasta do servidor local (no meu caso em /srv/www/htdocs/).
Se quiser renomeie a pasta extraída para qualquer nome de sua prefêrencia.
Normalmente eu tiro a pasta application de dentro da pasta system, para uma melhor
organização.
Feito isso, abra o arquivo application/config.php e altere a linha 14 para o seu diretório
padrão (localização da sua pasta no servidor). No meu caso ficou assim:
$config['base_url'] = "http://localhost/ci/";
Feito isso seu Codeigniter já está pronto para continuarmos. Acesse no seu navegador:
http://localhost/ci (ou troque ci pelo nome da pasta que você renomeou) e verá a tela de
boas vindas.
A estrutura padrão dos endereços é: ../index.php/Controller/Método/Parâmetro. Onde
“..” é a sua base_url (ver explicação logo acima).
PS: irei usar “..” para representar a base_url daqui pra frente.
2 – Criando nosso controller
Crie um arquivo chamado site.php no diretório application/controllers/. Esse será o
controller principal do site. A estrutura ficará assim:
class Site extends CI_Controller { // herda as características da classe Controller do CodeIgniter, todos os controllers serão suas
subclasses
function __construct() { parent::__construct(); //chama o construtor da superclasse, este
pode ser usado para carregar qualquer tipo de componente do sistema }
function index() { // método principal do controller, acessível em
../index.php/site/index ou ../index.php/site/ echo 'Método Index do Controller Site'; }
3 – Criando o Template
Ok, com o controller funcionando, criaremos finalmente o template da nossa aplicação.
Como você já deve ter visto, o comando para exibir as views é:
$this->load->view('nome_da_view');
E é comum usarem da seguinte forma, em cada função, para gerar “templates” :
function exemplo() { $this->load->view('topo'); $this->load->view('view_exemplo'); $this->load->view('rodape'); }
Isso não está errado, porém há uma forma mais simplificada de fazer isso, como
veremos agora. Usando nosso controller site como base, vamos criar duas propriedades
(ou atributos) na nossa classe:
class Site extends Controller { private $_tpl = 'themes/template1'; private $dados = array();
Criamos aqui a propriedade _tpl, que nada mais é do que a localização da view do
template (criei um diretorio para colocar só os temas). Se você criar outro template,
basta alterar aqui.
A segunda propriedade $dados, é um array em que será passado dados para exibir nossa
view, como o título da página e a view que será carregada no template. Vou alterar a
função index como exemplo:
function index() { $this->dados['titulo'] = 'Olá, seja bem vindo !';
$this->dados['pagina'] = 'principal'; $this->load->view($this->_tpl, $this->dados); }
Aqui carreguei a view themes/template1, e passei para ela todos os dados de $dados,
agora veremos como ficará nossa view
application/views/themes/template1.php
Percebam que criei um layout bem básico, na tag “title”, está mandando imprimir a
variável $titulo, vinda do controller através do array $dados (note que o array não é
passado, tudo que vem dentro dele se torna uma variável dentro da view).
Talvez o mais difícil de entender aqui seja essa parte:
Dentro da div#main_content, eu dei o comando pra carregar outra view, a variável
$pagina, que como definida no nosso controller será a „principal‟, fazendo com que o
template carregue qualquer view definida nos controllers. Para exemplificar melhor
criarei outro método. Também criei uma view menu, e um estilo em css, como podem
ver na estrutura do meu projeto (amplie a foto).
O controller ficará assim ao final do tutorial:
class Site extends CI_Controller {
private $_tpl = 'themes/template1'; private $dados = array();
function __construct() { parent::__construct(); }
function index() {
$this->dados['titulo'] = 'Olá, seja bem vindo !'; $this->dados['pagina'] = 'principal'; $this->load->view($this->_tpl, $this->dados);
}
function outraview() {
$this->dados['titulo'] = 'Olá, essa é outra view !'; $this->dados['pagina'] = 'outra_view'; $this->load->view($this->_tpl, $this->dados);
}
}
Você deve estar se perguntando, “como vou incluir javascripts?”
Simples, você adiciona somente nas views que for realmente utilizar, é até uma boa
prática, incluir os seus javascripts no final do arquivo, tendo assim uma renderização
progressiva da página.