Guia completo sobre o uso de rotas no CodeIgniter 3

Guia completo sobre o uso de rotas no CodeIgniter 3

13/12/2019 16 Por Jonathan Lamim

As rotas no CodeIgniter são as grandes responsáveis pela criação de URLs amigáveis para a sua aplicação, e é sobre elas que você irá aprender nas próximas linhas.

Rotas Reservadas

O CodeIgniter possui algumas rotas reservadas, são elas:

default_controller: responsável por definir o controller/method da aplicação que responderá pela página principal dela
404_override: rota responsável por definir o controller/method que responderá pelos erros 404 da aplicação
translate_uri_dashes: não chega a ser uma rota, pois recebe um valor booleano, mas permite substituir automaticamente os traços (‘-‘) na URL, pois classes e métodos não devem possuir o traço no nome

Rotas Mágicas

As rotas mágicas são a sequência controller/method utilizada nas URLs. Por exemplo:

Você tem um controller chamado Posts e um método chamado Visualizacao, logo a rota mágica seria: posts/visualizacao

Não é necessário criar a definição da rota no arquivo application/config/routes.php para que ela funcione. Você pode fazer uso das rotas mágicas pra qualquer chamada controller/method da sua aplicação.

Rotas Personalizadas

As rotas personalizadas são as mais utilizadas, pois elas são essencias para organizar sua aplicação de modo que as URLs se tornem intuitivas e além do mais, ajudem com as técnicas de SEO para indexação do site em motores de busca.

Essas rotas são montadas no arquivo application/config/routes.php e seguem o seguinte padrão:

$route['sua/rota/personalizada'] = "controller/method";

Os blocos da URL personalizada são divididos pela "/" e chamados de nós.

Uma URL personalizada pode ter quantos nós forem necessários, podendo incluir inclusive expressões regulares para limitar o valor que cada nó poderá receber, além de poder conter conteúdo estático para os nós.

O CodeIgniter possui 2 wildcards que podem ser utilizados nas rotas:

(:num): permite que apenas números sejam adicionados ao nó
(:any): permite que qualquer caracter seja adicionado ao nó, exceto a "/", que e o caracter delimitador do nó

Exemplos de rotas

Vejamos alguns exemplos de rotas bem comuns que são utilizados em aplicações.

Rota para abrir uma página para visualização de conteúdo de um post

$route['post/(:any)'] = "posts/visualizacao/$1";

Rota para abrir uma lista paginada de posts

$route['posts/(:num)'] = "posts/listagem/$1";

Rota para uma URL de busca com 3 parametros

$route['busca/(:any)/(:any)/(:any)'] = "buscas/index/$1/$2/$3";

Para recuperar o conteúdo de um nó da URL no controller você deve utilizar o seguinte método:

// Rota: "busca/todos/homens/28"
// Busca por todos os usuarios homens com 28 anos de idade
$this->uri->segment(1); //busca
$this->uri->segment(2); //todos
$this->uri->segment(3); //homens
$this->uri->segment(4); //28

Definindo verbos HTTP para as rotas

Os verbos HTTP são GET, POST, PUT, DELETE e PATCH, e são utilizados para definir qual o método de requisição esta sendo solicitado. São muito utilizados na criação de aplicações RESTfull. Esses verbos são case-insensitives, ou seja, tanto faz informá-los com letras maiúsculas ou minúsculas.

Vejamos um exemplo de como definir os verbos HTTP nas rotas:

$route['usuario/(:num)']['get'] = "usuarios/visualizar";
$route['usuario']['post'] = "usuarios/inserir";
$route['usuario/(:num)']['put'] = "usuarios/atualizar";
$route['usuario/(:num)']['delete'] = "usuarios/remover";

Quando você aponta um verbo HTTP para a rota, ele apenas filtra pelo tipo de requisição, sem alterar a estrutura da URI, então você terá uma URI limpa, sem qualquer tipo de informação sobre o verbo.

As rotas são muito importantes na sua aplicação. Antes de criá-las, faça uma análise da sua aplicação e crie rotas intuitivas, não só para facilitar a navegação do usuário mas tembém para otimizar e facilitar o desenvolvimento e futuras necessidades de manutenção no código.