File /core/MY_Router.php: we extend the core router to add the database functionality.
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');/*CUSTOM ROUTER FUNCTION TO CHECK FOR CITY SLUG PLUS CONTROLLERS */class MY_Router extends CI_Router{
public function __construct(){parent::__construct();$this->config =& load_class('Config', 'core');$this->uri =& load_class('URI', 'core');
require_once(BASEPATH.'database/DB'.EXT);$this->db = DB();}public function _set_routing(){$db_routes = $this->db->where('active', 1)->get('routes')->result();foreach ($db_routes as $route) {$this->routes[$route->slug] = 'coupons/index/' . $city->slug;$this->routes[$route->slug . '/(:any)'] = 'coupons/index/' . $city->slug . '/$1';}parent::_set_routing();}}
We need to change one character in system/core/Router.php to avoid overwrite the routes array.
In line 141 change this:
$this->routes = ( ! isset($route) OR ! is_array($route)) ? array() : $route;
to this:
$this->routes += ( ! isset($route) OR ! is_array($route)) ? array() : $route;
(NOTE THE + SIGN)
That's all. Efective and Beautiful.
No hay comentarios:
Publicar un comentario