CodeIgniter – Rotas

Olá caros leitores. Sei que fiquei um tempo sem colocar conteúdo novo aqui no blog, mas finalmente achei um “tempinho” para dar continuidade à nossa série de posts sobre o framework CodeIgniter.

Hoje veremos o que são rotas, a importância e o modo de utilizá-las no CI. Antes de começar gostaria de indicar a leitura do último post (CodeIgniter – Controllers) para aqueles que ainda não o fez.

Bom, nos últimos posts vimos que a estrutura da URL no CI obedece basicamente a seguinte estrutura:

http://www.seusite.com/controller/function/param1/paramN

Em alguns casos, porém, pode surgir a necessidade de se customizar essa estrutura e é aí que surgem as rotas. Ou seja, criar um fluxo alternativo que obedeça uma determinada regra e que faça a chamada da classe/método/parâmetro não necessariamente explícita na URL.

Vamos pensar em um caso prático. Imagine que dentro do seu site você tem uma página de notícias. Você criou o controller Noticias e a URL para acessar essa página é a http://www.seusite.com/noticias . Porém, vamos supor que a página de blog seja linkada com notícias. Ou seja, quando se digitar http://www.seusite.com/blog a aplicação deve ser redirecionada para o controller Noticias. A alternativa ideal é configurar uma rota para fazer esse redirecionamento. Para isso, vamos abrir o arquivo application/config/routes.php e inserir a seguinte linha:

44
45
46
47
48
$route['blog'] = 'noticias';
 
 
/* End of file routes.php */
/* Location: ./application/config/routes.php */

E pronto! Já está funcionando. Quando o controller blog for requisitado a página de noticias será carregada.

Mas não termina por aí. É possível fazer algo mais complexo do que isso.

Imagine a página de produtos no seu site de e-commerce. Dentro do controller Produtos você cria o método detalhes($id) onde de acordo com o código de um determinado produto suas especificações são apresentadas. Exemplo: http://www.seusite.com/produtos/detalhes/1 mostrará a página com os detalhes do produto 1. Porém essa URL poderia ser enxugada, mais amigável e mais simples do usuário lembrar/acessar. Algo do tipo: http://www.seusite.com/produtos/1

Podemos fazer isso também configurando uma rota. Veja:

$route['produtos/(:any)'] = 'produtos/detalhes/$1';
 
 
/* End of file routes.php */
/* Location: ./application/config/routes.php */

O (:any) serve para indicar que a URL pode aceitar qualquer valor e esse valor será substituído por $1 na URL. Logo, sempre que a URL http://www.seusite.com/produtos/1 for solicitada na verdade o que será executado será http://www.seusite.com/produtos/detalhes/1

Um último exemplo pois acredito que esse será de utilidade para muitos. Vamos supor que em seu site você tem uma área restrita de administração e por organização você quer separar os controllers dentro de uma subpasta (Ex: controllers/admin/login.php)

Para que as páginas de “admin” sejam acessadas sem maiores problemas, podemos configurar rotas também. No caso vamos configurar duas: uma para o controller padrão (que no nosso caso será o login.php) e outra para os demais controllers que existirem. Veja:

$route['admin'] = 'admin/login'; 
$route['admin/(:any)'] = 'admin/$1';
 
/* End of file routes.php */
/* Location: ./application/config/routes.php */

Assim, quando a url http://www.seusite.com/admin for solicitada o encaminhamento é feito para o controller admin/login.php . E quando qualquer outra página de “admin” for solicitada (ex: http://www.seusite.com/admin/algumacoisa) ele carrega o controller correspondente (ex: controllers/admin/algumacoisa.php).

Fique à vontade para criar quantas rotas quiser e por hoje é só. Espero que tenham entendido como funciona as rotas no CodeIgniter.

Qualquer dúvida é só postar um comentário.]

Até a próxima!

Confira todos os posts da série CodeIgniter Framework

É formado em Sistemas de Informação, pós-graduado em Sistemas de Banco de Dados e mestre em Educação com foco em Tecnologias Sociocomunitárias. Trabalha como professor de ensino técnico e tecnológico no Instituto Federal de Educação, Ciência e Tecnologia de São Paulo ministrando disciplinas nas áreas de programação, banco de dados, desenvolvimento de projetos e engenharia de software.

Posts relacionados

Comentários

  1. Muito bom…

    Uma dúvida…. estou acostumado a usar o URLAmigaveis pelo htaccess…
    qual a diferença entre as Rotas e o URL Amigaveis????
    e no caso de usar Rotas no CI, não há necessidade de usar URL Amigaveis pelo htaccess???

    Abraçooo

    1. Olá Felipe,

      Bom, é bem diferente.

      As rotas servem para você poder mudar o padrão de “chamada” dos controllers e actions dentro do CI.

      Eu faço o seguinte: Crio uma única regra no htaccess do meu projeto em CI e o resto eu faço tudo pelas rotas. Acho bem mais fácil.

      Abs!

  2. boa tarde, estou tentando fazer que meu site seja redirecionado para outra pagina porém quando clico no link ele retorna pagina não encontrada.
    Tenho que criar um rota para esse novo endereço, ou somente crio o controller e a viwe e quando clico no link ele ja vai chamar a viwe ?

    Poderia me ajudar sou novo no mvc.

    1. Guilherme,

      Por padrão, ele vai entender a seguinte regra: seusite.com/controller/action

      Nesse caso não precisa configurar uma rota. Só criar o controller, a action e chamar a view e já está funcionando.

      Rota é só quando você quer algo personalizado (que fuja a essa regra do controller/action).

      Abs!

  3. Rafael tenho uma loja on line hoje em dia usa a plataforma WordPress mais sinto muita falta de segurança qual a sua dica de uma plataforma segura.
    Abaixo coloquei alguns descritivo que uso na loja para você ter uma noção

    Datador X1JET Weber

    Datador X1jet Weber é Fácil de usar, a impressão com a Markoprint X1JET é simples, devido a 3 lógica operação intuitiva com luz LED de status. A transmissão de dados é inicializado com USB stick (pendrive) / interface.

  4. Pingback: CodeIgniter - URLs

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *