CodeIgniter Forums
use hook to set CI router - Printable Version

+- CodeIgniter Forums (https://forum.codeigniter.com)
+-- Forum: Archived Discussions (https://forum.codeigniter.com/forumdisplay.php?fid=20)
+--- Forum: Archived Development & Programming (https://forum.codeigniter.com/forumdisplay.php?fid=23)
+--- Thread: use hook to set CI router (/showthread.php?tid=49481)



use hook to set CI router - El Forum - 02-21-2012

[eluser]Unknown[/eluser]
Dear ALL,
Do not know the two kinds of ways to see the CI route is how to play my impression
1.config/routes.php manually add
2.Gocart type
Code:
include('database.php');

if($db[$active_group]['pconnect'])
{
        mysql_pconnect($db[$active_group]['hostname'],$db[$active_group]['username'],$db[$active_group]['password']);        
}
else
{
        mysql_connect($db[$active_group]['hostname'],$db[$active_group]['username'],$db[$active_group]['password']);        
}
mysql_select_db($db[$active_group]['database']) or die("Unable to select database");

$routes        = mysql_query('SELECT * FROM '.$db[$active_group]['dbprefix'].'routes');

while($row = mysql_fetch_array($routes))
{
        //if "category" is in the route, then add some stuff for pagination
        if(strpos($row['route'], 'category'))
        {
                $route[$row['slug']] = $row['route'];

                $row['slug']         .= '/(:num)';
                $row['route']         .= '/$1';
        }
        $route[$row['slug']] = $row['route'];
}
Tonight, I suddenly found that, routing can be set up
1.Modify CI_Route
Code:
/*add set*/
        public function set($key, $value)
        {
                if ( ! isset($this->routes[$key]))
                {
                        $this->routes[$key] = $value;
                }
        }      


/*_set_routing assign value use self::set function*/
                $routes = ( ! isset($route) OR ! is_array($route)) ? array() : $route;
                
                if (count($routes) > 0)
                {
                        foreach ($routes as $key => $value)
                        {
                                self::set($key, $value);
                        }
                }
2.congif hook
Code:
$hook['pre_system'] = array(
                                'class'    => 'bootstrap',
                                'function' => 'route_setup',
                                'filename' => 'bootstrap.php',
                                'filepath' => '.');
3.add file bootstrap.php location APPPATH.'bootstrap.php'
Code:
class bootstrap
{
        public function __construct()
        {      
        }
        /*config route */
        public function route_setup()
        {
                /*add route*/
                 $RTX = & load_class('Router', 'core');
                 $RTX->set($key,$value);
        }
}
Any time you want to modify the routing to direct calls