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
- Introdução ao CodeIgniter Framework
- CodeIgniter – URLs
- CodeIgniter – Controllers
- CodeIgniter – Rotas
- CodeIgniter – Views
- CodeIgniter – Models (Parte I)
- CodeIgniter – Models (Parte II)
- CodeIgniter – Models (Parte III) – Consultas Complexas
Muito bacana….Ainda bem que tenho o seu site como fonte de informação…Parabéns…!!!!
estava procurando isso mesmo, parece que você fez o post pra mim, kkk.
eu tinha essa dúvida tipo:
http://www.site.com.br = http://www.site.com.br
agora se fosse assim
http://www.site.com.br/site/contato ia ficar feio, ai entra a tua dica para minha dúvida, é só usar rotas, ai posso deixar a url assim: http://www.site.com.br/contato..
na verdade acho que precipitei, como eu faria para quando o usuário fosse para a página de contato por exemplo a url ficasse assim http://www.site.com.br/contato ao invés de http://www.site.com.bor/contoller/contato ?
obrigado
Olá Junior,
É só criar o controller contato.php dentro da pasta controller.
Dê uma olhada no ultimo post.
Abs
Muito bom!
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
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!
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.
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!
Gostaria de parabeniza-lo pelo conteúdo do seu site , excelente conteúdo, parabens.
Bom dia
alguém poderia me ajudar estou começando agora qual seria a melhor
plataforma de e-commerce para trabalhar
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.