Rotas CodeIgniter: Roteamento de URL com exemplo
O que são rotas CodeIgniter?
As rotas são responsáveis por responder às solicitações de URL. O roteamento corresponde a URL às rotas predefinidas. Se nenhuma correspondência de rota for encontrada, o CodeIgniter lança uma exceção para uma página não encontrada.
As rotas no CodeIgniter são definidas usando a fórmula abaixo:
example.com/Controller/Method/Parameter/
AQUI,
- Controller -é mapeado para o nome do controlador que deve responder à URL.
- Método – é mapeado para o método no controlador que deve responder à solicitação de URI.
- Parâmetro – esta seção é opcional.
Exemplo de rotas CodeIgniter
Vejamos agora um roteamento de URL prático em CodeIgniter exemplo.
Considere o seguinte URL http://localhost:3000/contacts/edit/1
AQUI,
- O nome do controlador que responde ao URL acima é “contatos”
- O método na classe do controlador Contatos é “editar”
- O método de edição aceita um parâmetro. No caso do nosso exemplo, o valor “1” é passado para o método.
Aqui está um breve histórico do que planejamos fazer:
- Roteamento – o roteamento é responsável por responder às solicitações de URL. O CodeIgniter Routing combina a URL com as rotas predefinidas. Se nenhuma correspondência de rota for encontrada, o CodeIgniter lança uma exceção de página não encontrada.
- controladores – as rotas estão vinculadas aos controladores. Os controladores unem os modelos e as visualizações. A solicitação de dados/lógica de negócios do modelo e o retorno dos resultados por meio da apresentação de visualizações. Depois que uma URL é correspondida a uma rota no CodeIgniter, ela é encaminhada para uma função pública do controlador que interage com a fonte de dados, a lógica de negócios e retorna a visualização que exibe os resultados.
- Visualizações – as visualizações são responsáveis pela apresentação. Uma visualização geralmente é uma combinação de HTML, CSS e JavaScript. Esta é a parte responsável por exibir a página web ao usuário. Normalmente, os dados exibidos geralmente são recuperados do banco de dados ou de qualquer outra fonte de dados disponível.
Para aprender como implementar roteadores em um projeto real, assumiremos que estamos criando um aplicativo para gerenciar detalhes de contato. A tabela a seguir mostra os URLs com os quais trabalharemos.
S / N | URL | Rota | Responsável pelo Tratamento | Forma |
---|---|---|---|---|
1 | / | $ rota['default_controller'] | Bem-vindo | índice |
2 | /Contatos | $rota['contatos'] | Contactos | índice |
3 | /contatos/criar | $rota['criar'] | Contactos | crio |
4 | /contatos/editar/id | $rota['editar/:id'] | Contactos | editar |
5 | /contatos/atualização/id | $rota['atualização/:id'] | Contactos | atualizar |
6 | /contatos/excluir/id | $rota['excluir/:id'] | Contactos | delete |
Criaremos as rotas da nossa aplicação com base na tabela acima. Definimos os URLs, a rota do CodeIgniter e os mapeamos para os respectivos controladores e nomes de métodos.
Criando roteamento de URL para o aplicativo
Vamos criar o roteamento de URL do CodeIgniter para nosso projeto tutorial
Abra application/config/routes.php
Modifique as rotas para corresponder ao seguinte
$route['default_controller'] = 'welcome'; $route['contacts'] = 'contacts'; $route['create'] = 'contacts/create'; $route['edit/:id'] = 'contacts/edit'; $route['update/:id'] = 'contacts/update'; $route['delete/:id'] = 'contacts/delete'; $route['404_override'] = ''; $route['translate_uri_dashes'] = FALSE;
AQUI,
- $route['default_controller'] = 'bem-vindo'; define o controlador padrão Welcome.
- $route['contatos'] = 'contatos'; define uma rota de contatos que chama o método de índice no controlador de contatos
- $route['create'] = 'contatos/criar'; define uma rota create que aponta para o controlador Contacts e chama o método create.
- $route['edit/:id'] = 'contatos/editar'; define uma edição de rota que aceita um parâmetro de id e aponta para o método de edição do controlador de contatos
- $route['update/:id'] = 'contatos/atualização'; define uma rota update que aceita um parâmetro id e aponta para o método update da classe Contacts.
- $route['delete/:id'] = 'contatos/excluir'; define uma rota delete que aceita um parâmetro de id e aponta para o método delete do controlador Contacts.
A tabela a seguir mostra os respectivos URLs derivados das rotas definidas acima
S / N | Rota | URL correspondente |
---|---|---|
1 | $route['default_controller'] = 'bem-vindo'; | http://localhost:3000 |
2 | $route['contatos'] = 'contatos'; | http://localhost:3000/contacts |
3 | $route['create'] = 'contatos/criar'; | http://localhost:3000/contacts/create |
4 | $route['edit/:id'] = 'contatos/editar'; | http://localhost:3000/contacts/edit/1 |
5 | $route['update/:id'] = 'contatos/atualização'; | http://localhost:3000/contacts/update/1 |
6 | $route['delete/:id'] = 'contatos/excluir'; | http://localhost:3000/contacts/delete/1 |
Agora que cobrimos as rotas, vamos criar o controlador de Contatos que responderá às ações especificadas nas rotas.
Crie um novo arquivo Route no CodeIgniter como Contacts.php em application/controllers/Contacts.php
Adicione o seguinte código
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Contacts extends CI_Controller { public function __construct() { parent::__construct(); $this->load->helper('url'); } public function index() { $this->load->view('header'); $this->load->view('contacts/index'); $this->load->view('footer'); } public function create() { $this->load->view('header'); $this->load->view('contacts/create'); $this->load->view('footer'); } public function edit($id) { $this->load->view('header'); $this->load->view('contacts/edit'); $this->load->view('footer'); } public function update($id) { $this->load->view('header'); $this->load->view('contacts/update'); $this->load->view('footer'); } public function delete($id) { $this->load->view('header'); $this->load->view('contacts/delete'); $this->load->view('footer'); } }
AQUI,
- Contatos de classe estendem CI_Controller {..} define nossa classe de controlador e estende a classe CI_Controller que vem com o CodeIgniter.
- Os métodos definidos acima correspondem às rotas que definimos e aqueles com parâmetros como delete aceitam um parâmetro de $id
- Observe que as funções carregam três (3) visualizações. O cabeçalho e o rodapé são comuns para todos os métodos. A visualização intermediária é muito específica para a ação, ou seja, excluir para excluir a função, criar uma visualização para criar uma função, etc. Outra coisa importante a lembrar é que as visualizações são carregadas do subdiretório de contatos.
Visualizações do CodeIgniter
Ainda precisamos dar mais um passo antes de podermos testar nossas rotas CodeIgniter com parâmetros no navegador web. Vamos criar as visualizações correspondentes aos métodos do controlador acima.
A imagem a seguir mostra como será a aparência do seu aplicativo
Crie os seguintes arquivos em application/views
header.php – this file will contain contacts app menu and the header footer.php – this files will contain the application footer.
Crie um novo diretório de contatos em views application/views/contacts
Crie os seguintes arquivos dentro
index.php create.php edit.php
Sua estrutura de arquivos deve ser a seguinte
Vamos agora atualizar o header.php
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>CodeIgniter Routes</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.2/css/bulma.min.css"> <script defer src="https://use.fontawesome.com/releases/v5.3.1/js/all.js"></script> </head> <body> <section class="section"> <div class="container"> <h1 class="title">CI Contacts v1</h1> <h2 class="subtitle">CodeIgniter contacts management app</h2> <div class="columns"> <div class="column is-one-quarter"> <aside class="menu"> <p class="menu-label"> General </p> <ul class="menu-list"> <li><a class="is-active" href="#">Dashboard</a></li> <li><a href="<?=site_url('contacts/create')?>">New Contact</a></li> <li><a href="<?=site_url('contacts/edit/1')?>">Edit Contacts</a></li> </ul> <p class="menu-label"> Settings </p> <ul class="menu-list"> <li><a href="#">SMS</a></li> <li><a href="#">Email</a></li> </ul> </aside> </div>
AQUI,
- O código HTML acima carrega Burma CSS de uma rede CDN.
A seguir está o código para footer.php
</div> </div> </section> </body> </html>
Vamos agora adicionar o código dos arquivos index.php, edit.php e create.php para contatos.
index.php <div class="column">Index content goes here...</div> edit.php <div class="column">Edit content goes here...</div> create.php <div class="column">Create content goes here...</div>
Você pode salvar todas as alterações feitas.
Abra o seguinte URL em seu navegador http://localhost:3000/contacts/
você pode clicar nos links Novo contato e Editar contato e ver o que acontece
Resumo
- As rotas no CI são responsáveis por responder às solicitações de URL. O roteamento corresponde a URL às rotas predefinidas. Se nenhuma correspondência de rota do CodeIgniter for encontrada, o CodeIgniter lança uma exceção de página não encontrada.
- O CI Routing é responsável por responder às solicitações de URL. O roteamento corresponde a URL às rotas predefinidas.
- Os controladores unem os modelos e as visualizações. A solicitação de dados/lógica de negócios do modelo e o retorno dos resultados por meio da apresentação de visualizações.
- As visualizações são responsáveis pela apresentação. Uma visualização geralmente é uma combinação de HTML, CSS e JavaRoteiro.
- Neste tutorial, aprendemos como criar rotas no CodeIgniter para um exemplo de aplicação do mundo real e cobrimos os conceitos básicos de roteamento que você precisa saber para começar a desenvolver o CodeIgniter.