CodeIgniter: Roteamentos Inteligentes
O roteamento inteligente permite criar URLs personalizadas. Com isso, a URL padrão do Codeigniter pode ser customizada. O cuidado extra é no default controller onde deve ter um método para implementar o erro de not found (404). No exemplo dos arquivos, ele simula as URLs encontradas em um blog:
Código fonte do arquivo [project-root]/application/controller/defaultController.php
class DefaultController extends CI_Controller {
public function _remap(){
$s1 = $this->uri->segment(1);
$s2 = $this->uri->segment(2);
$s3 = $this->uri->segment(3);
$s4 = $this->uri->segment(4);
if($s1 == ''){ $this->index(); }
elseif((int)$s1 > 0 && (int)$s2 > 0 && (int)$s3 > 0){
$news = $this->news->getNews($s1, $s2, $s3, $s4);
$this->siteNews($news);
}else{
$page = $this->pages->getPage($s1);
if($page['id'] > 0){ $this->sitePage($page); }
else{ $this->error404(); }
}
}
}
Código fonte do arquivo [project-root]/application/config/routes.php
// For auto map
$default_controller = "defaultController";
$controller_exceptions = array('admin');
$route['default_controller'] = $default_controller;
$route["^((?!\b".implode('\b|\b', $controller_exceptions)."\b).*)$"] = $default_controller.'/$1';
$route['404_override'] = '';
E era isso! 😉