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รฉ.

  • ๐Ÿงญ Regra fundamental: Uma rota corresponde a um URL para um controlador, mรฉtodo e parรขmetro opcional.
  • ๐Ÿ“ Fรณrmula: O padrรฃo รฉ Controlador/Mรฉtodo/Parรขmetro, definido em application/config/routes.php.
  • ???? Rota padrรฃo: O controlador padrรฃo define a pรกgina inicial quando nรฃo hรก nenhuma. URL O segmento รฉ fornecido.
  • ๐Ÿ”ข parรขmetros: Uma rota como edit/:id passa o valor do id para o mรฉtodo do controlador.
  • ๐ŸŽ›๏ธ Controlador: Cada rota corresponde a um mรฉtodo que carrega as visualizaรงรตes correspondentes.
  • ๐Ÿ–ผ๏ธ Opiniรตes compartilhadas: As visualizaรงรตes de cabeรงalho e rodapรฉ sรฃo reutilizadas, com uma visualizaรงรฃo intermediรกria especรญfica para cada aรงรฃo.
  • โ“ 404 Manuseio: Inigualรกvel URL Gera uma exceรงรฃo de pรกgina nรฃo encontrada, que pode ser sobrescrita com 404_override.

CodeRotas do Igniter

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:

CodePrรฉvia do aplicativo de contatos Igniter

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:

CodeEstrutura de arquivos de visualizaรงรฃo do Igniter

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.

Perguntas Frequentes

Defina a rota com um marcador de posiรงรฃo como edit/:id e aceite o argumento correspondente no mรฉtodo do controlador, por exemplo edit($id). CodeO ignitor passa o URL segmento nesse argumento.

CodeO Igniter lanรงa uma exceรงรฃo de pรกgina nรฃo encontrada e exibe a pรกgina 404. Vocรช pode direcionar o parรขmetro `404_override` para o seu prรณprio controlador para exibir uma pรกgina de erro personalizada.

site_url() constrรณi um site completo URL A partir do seu base_url e da rota, para que os links continuem funcionando se o site for movido ou o caminho base for alterado. ร‰ necessรกrio o URL O auxiliar deve ser carregado primeiro.

Sim. A partir de um nome de recurso como "contactos", a IA pode gerar o รญndice, criar, editar, atualizar e excluir rotas com mรฉtodos de controlador correspondentes, seguindo as convenรงรตes REST. Confirme os nomes dos parรขmetros.

Carregar o cabeรงalho e o rodapรฉ separadamente evita a repetiรงรฃo do mesmo layout em todas as visualizaรงรตes de pรกgina. Cada mรฉtodo carrega o cabeรงalho compartilhado, uma visualizaรงรฃo de conteรบdo especรญfica e, em seguida, o rodapรฉ compartilhado.

Resuma esta postagem com: