Amigo,
Não sei se é a melhor solução, mas eu costumo brincar com urls amigáveis usando
esse pedaço de código para controle de rotas.
function rotas($class) {
// index? if ($this->uri['controller'] == "") {
$this->loadController("home"); } else {
// buscar? if ($this->uri['controller'] == "buscar") {
$this->loadController("listagem", "buscar", $this->uri['method'],
$this->uri['param']); }
// controller? $d = dir($GLOBALS['blog_framework_controller']);
while (false !== ($entry = $d->read())) { if
(strpos($entry, '.php')) { $rotas[] = str_replace('.php', '',
$entry); } } if (in_array($this->uri['controller'],
$rotas)) { if ($this->uri['method']) {
$this->loadController($this->uri['controller'], $this->uri['method'],
$this->uri['param']); } else {
$this->loadController($this->uri['controller'], 'index'); } }
// nome de categoria? $listagem_controller =
$GLOBALS['blog_framework_controller'] . "listagem.php";
require_once($listagem_controller); $controller = new listagem();
$res = $controller->existeCategoria($this->uri['controller']); if
($res) { $this->loadController("listagem", "categoria",
$this->uri['controller'], $this->uri['method']); }
// nome-de-um-artigo? $artigo_controller =
$GLOBALS['blog_framework_controller'] . "artigo.php";
require_once($artigo_controller); $controller = new Artigo();
$res = $controller->existeArtigo($this->uri['controller']); if ($res) {
$this->loadController("artigo", "index", $this->uri['controller']);
} } // 404, nenhum controller não foi encontrado
$this->loadController("erro_404"); }
Você pode mudar A ORDEM DOS CONDICIONAIS se quiser que o MVC procure primeiro
isso, depois aquilo. Você tem total liberdade para fazer o que quiser,
lembrando que eu já "fatiei" a url recebida e aloquei na ordem com os seguintes
nomes: "www.exemplo.com/controller/método/parâmetro. No entando, como você
pôde ver, eu posso processar da forma e ordem que eu quiser, ou ainda eu posso
pegar um pedaço e executar OUTRO controller.
Espero ter contribuído de alguma forma.
Att,
> From: [email protected]
> Date: Sat, 30 Apr 2011 21:23:17 -0300
> To: [email protected]
> Subject: [CodeIgniter] Problema com Rotas e Segments!
>
> Pessoal, tudo bem?
> Então estou com um problema e queria compartilhar com vcs para ver se alguem
> tem algum tipo de luz para me dar.
>
> Então, tenho uma aplicação (www.quegostoso.com.br - Meu site)
> Estou tento alguns problemas de rotas, q q ta rolando:
>
> Tenho atualmente uma cidade no sistema, ele é preparado para trabalhar com N
> cidades, atraves de cookie
> mas acho que seria muito interessante colocar a cidade na url, hj a página
> inicial independente da cidade é:
>
> www.quegostoso.com.br/home
>
> Eu gostaria que isso fosse,
> www.quegostoso.com.br/nome-da-cidade
>
> para mudar de cidade existe uma url que limpa e grava um cookie no usuário,
> mas ai vai outro problema
> tenho um controllador chamado ofertas-recentes , queria que ficasse
>
> www.quegostoso.com.br/nome-da-cidade/ofertas-recentes
>
> O Problema é que a aplicação tem todas os controllers trabalhando com
> segments e nisso se eu colocar mais um /alguma-coisa
> vou ter que mudar tudo, o que vem a ser um grande trabalho.
>
> Alguem tem algum tipo de ideia q desse pra me ajudar?
>
> Allan Torres
>
>
>
> _______________________________________________
> [email protected]
> http://www.codeigniter.com.br
> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>
> ---------------------------
> Oportunidade de negócio
> http://www.franquiasargohost.net
> ---------------------------
_______________________________________________
[email protected]
http://www.codeigniter.com.br
http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
---------------------------
Oportunidade de negócio
http://www.franquiasargohost.net
---------------------------