CodeRotas do Igniter: URL Roteamento com exemplo
โก Resumo Inteligente
CodeIgnorar URL Mapas de roteamento URL para um controlador e mรฉtodo, com um parรขmetro opcional. As rotas sรฃo definidas em routes.php, portanto, รฉ um arquivo limpo. URL O mรฉtodo `contacts/edit/1` executa o mรฉtodo `edit` do controlador `Contacts`, que carrega as visualizaรงรตes de cabeรงalho, conteรบdo e rodapรฉ.

Quais sรฃo CodeRotas do Igniter?
As rotas sรฃo responsรกveis โโpor responder a URL solicitaรงรตes. O roteamento corresponde ao URL ร s rotas predefinidas. Se nenhuma rota correspondente for encontrada, CodeO Igniter lanรงa uma exceรงรฃo de pรกgina nรฃo encontrada.
Rotas em CodeOs ignitores sรฃo definidos usando a fรณrmula abaixo:
example.com/Controller/Method/Parameter/
Aqui:
- O controlador รฉ mapeado para o nome do controlador que deve responder ao URL.
- O mรฉtodo รฉ mapeado para o mรฉtodo no controlador que deve responder ร solicitaรงรฃo da URI.
- Parรขmetro โ esta seรงรฃo รฉ opcional.
CodeExemplo de rotas do Igniter
Vejamos agora um exemplo prรกtico. URL roteamento em CodeIgnorar Exemplo. Considere o seguinte: URL: http://localhost:3000/contacts/edit/1
Aqui:
- O nome do controlador que respondeu ao acima mencionado URL รฉ โcontactosโ.
- O mรฉtodo na classe controladora Contacts รฉ โeditโ.
- O mรฉtodo de ediรงรฃo aceita um parรขmetro. Em nosso exemplo, o valor โ1โ รฉ passado para o mรฉtodo.
Aqui estรก um breve histรณrico do que planejamos fazer:
- Roteamento โ o roteamento responde a URL pedidos. CodeO roteamento do Igniter corresponde ao URL ร s rotas predefinidas. Se nenhuma rota correspondente for encontrada, CodeO Igniter lanรงa uma exceรงรฃo de pรกgina nรฃo encontrada.
- controladores โ As rotas estรฃo vinculadas aos controladores. Os controladores conectam os modelos e as visualizaรงรตes. Eles solicitam dados e lรณgica de negรณcios do modelo e retornam os resultados por meio da apresentaรงรฃo da visualizaรงรฃo. Uma vez que um URL Apรณs ser associada a uma rota, a solicitaรงรฃo รฉ encaminhada para uma funรงรฃo pรบblica do controlador que interage com a fonte de dados e a lรณgica de negรณcios, retornando a visualizaรงรฃo.
- Visualizaรงรตes โ as visualizaรงรตes sรฃo responsรกveis โโpela apresentaรงรฃo. Uma visualizaรงรฃo geralmente รฉ uma combinaรงรฃo de HTML, CSS e JavaScriptEsta parte รฉ responsรกvel por exibir a pรกgina da web para o usuรกrio. Normalmente, os dados exibidos sรฃo obtidos do banco de dados ou de outra fonte de dados.
Para aprender como implementar rotas em um projeto real, vamos supor que estamos criando um aplicativo para gerenciar informaรงรตes de contato. A tabela a seguir mostra o URLcomo estaremos trabalhando.
| 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 | cria |
| 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 o URLs, o CodeRota Igniter, e mapeadas para os respectivos nomes de controlador e mรฉtodo.
Criar URL Roteamento para o Aplicativo
Vamos criar CodeIgnorar URL Para o roteamento do nosso projeto tutorial, abra o arquivo application/config/routes.php e modifique as rotas para que correspondam 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['contacts'] = 'contacts';` define uma rota de contatos que chama o mรฉtodo `index` no controlador de Contatos.
- `$route['create'] = 'contacts/create';` define uma rota `create` que aponta para o controlador `Contacts` e chama o mรฉtodo `create`.
- `$route['edit/:id'] = 'contacts/edit';` define uma rota `edit` que aceita um parรขmetro `id` e aponta para o mรฉtodo `edit` do controlador `Contacts`.
- `$route['update/:id'] = 'contacts/update';` define uma rota de atualizaรงรฃo que aceita um parรขmetro de ID e aponta para o mรฉtodo de atualizaรงรฃo da classe `Contacts`.
- `$route['delete/:id'] = 'contacts/delete';` define uma rota de exclusรฃo que aceita um parรขmetro de ID e aponta para o mรฉtodo de exclusรฃo do controlador de Contatos.
A tabela a seguir mostra os respectivos URLderivados das rotas definidas acima:
| S / N | Rota | Correspondente URL |
|---|---|---|
| 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 jรก abordamos as rotas, vamos criar o controlador de Contatos que responderรก ร s aรงรตes especificadas nas rotas. Crie um novo arquivo Contacts.php em application/controllers/Contacts.php e 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:
- A classe `Contacts` estende a classe `CI_Controller` {โฆ} e define nossa classe de controlador, que por sua vez estende a classe `CI_Controller` que vem com o controlador. CodeIgniรงรฃo.
- 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 visualizaรงรตes. O cabeรงalho e o rodapรฉ sรฃo comuns a todos os mรฉtodos. A visualizaรงรฃo do meio รฉ especรญfica da aรงรฃo, ou seja, "excluir" para a funรงรฃo de exclusรฃo e "criar" para a funรงรฃo de criaรงรฃo. Outro ponto importante a lembrar รฉ que as visualizaรงรตes sรฃo carregadas do subdiretรณrio de contatos.
CodeVisualizaรงรตes do Igniter
Ainda precisamos de mais um passo antes de podermos testar o nosso CodeRotas Igniter com parรขmetros no navegador web. Vamos criar as views correspondentes aos mรฉtodos do controller acima. A imagem a seguir mostra como ficarรก a aplicaรงรฃo:
Crie os seguintes arquivos em application/views:
header.php โ this file will contain the contacts app menu and the header footer.php โ this file will contain the application footer
Crie um novo diretรณrio chamado "contacts" dentro de application/views (application/views/contacts) e crie os seguintes arquivos dentro dele:
index.php create.php edit.php
A estrutura dos seus arquivos deve ser a seguinte:
Vamos agora atualizar o arquivo 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 o CSS do Bulma a partir de uma CDN.
Segue abaixo o cรณdigo do arquivo footer.php:
</div> </div> </section> </body> </html>
Vamos agora adicionar o cรณdigo para os arquivos index.php, edit.php e create.php da seรงรฃo de 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 arquivo. URL No seu navegador web: http://localhost:3000/contacts/Vocรช pode clicar nos links Novo Contato e Editar Contato e ver o que acontece.


