Luiz Souza

DevSecOps Specialist

CodeIgniter: Roteamentos Inteligentes

10/03/2015 Tech 1 minuto para ler
codeigniter controller fica-a-dica programação rotas roteamento _remap

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! 😉