Welcome Guest, Not a member yet? Register   Sign In
[Solved] MY_Router Modify _set_routing
#1

(This post was last modified: 07-31-2017, 10:34 PM by wolfgang1983.)

Instead of using multiple query stings for routes

Code:
http://localhost/project/index.php?d=common&c=home

Is it possible to modify _set_routing() so it can handle it like 

PHP Code:
http://localhost/project/index.php?route=common/home 
PHP Code:
<?php

class MY_Router extends CI_Router {
 
  
    protected 
function _set_routing()
 
   {
 
       // Load the routes.php file. It would be great if we could
 
       // skip this for enable_query_strings = TRUE, but then
 
       // default_controller would be empty ...
 
       if (file_exists(APPPATH.'config/routes.php'))
 
       {
 
           include(APPPATH.'config/routes.php');
 
       }

 
       if (file_exists(APPPATH.'config/'.ENVIRONMENT.'/routes.php'))
 
       {
 
           include(APPPATH.'config/'.ENVIRONMENT.'/routes.php');
 
       }

 
       // Validate & get reserved routes
 
       if (isset($route) && is_array($route))
 
       {
 
           isset($route['default_controller']) && $this->default_controller $route['default_controller'];
 
           isset($route['translate_uri_dashes']) && $this->translate_uri_dashes $route['translate_uri_dashes'];
 
           unset($route['default_controller'], $route['translate_uri_dashes']);
 
           $this->routes $route;
 
       }

 
       // Are query strings enabled in the config file? Normally CI doesn't utilize query strings
 
       // since URI segments are more search-engine friendly, but they can optionally be used.
 
       // If this feature is enabled, we will gather the directory/class/method a little differently
 
       if ($this->enable_query_strings)
 
       {
 
           // If the directory is set at this time, it means an override exists, so skip the checks
 
           if ( ! isset($this->directory))
 
           {
 
               $_d $this->config->item('directory_trigger');
 
               $_d = isset($_GET[$_d]) ? trim($_GET[$_d], " \t\n\r\0\x0B/") : '';

 
               if ($_d !== '')
 
               {
 
                   $this->uri->filter_uri($_d);
 
                   $this->set_directory($_d);
 
               }
 
           }

 
           $_c trim($this->config->item('controller_trigger'));
 
           if ( ! empty($_GET[$_c]))
 
           {
 
               $this->uri->filter_uri($_GET[$_c]);
 
               $this->set_class($_GET[$_c]);

 
               $_f trim($this->config->item('function_trigger'));
 
               if ( ! empty($_GET[$_f]))
 
               {
 
                   $this->uri->filter_uri($_GET[$_f]);
 
                   $this->set_method($_GET[$_f]);
 
               }

 
               $this->uri->rsegments = array(
 
                   1 => $this->class,
 
                   2 => $this->method
                
);
 
           }
 
           else
            
{
 
               $this->_set_default_controller();
 
           }

 
           // Routing rules don't apply to query strings and we don't need to detect
 
           // directories, so we're done here
 
           return;
 
       }

 
       // Is there anything to parse?
 
       if ($this->uri->uri_string !== '')
 
       {
 
           $this->_parse_routes();
 
       }
 
       else
        
{
 
           $this->_set_default_controller();
 
       }
 
   }

There's only one rule - please don't tell anyone to go and read the manual.  Sometimes the manual just SUCKS!
Reply


Messages In This Thread
[Solved] MY_Router Modify _set_routing - by wolfgang1983 - 07-31-2017, 09:23 PM



Theme © iAndrew 2016 - Forum software by © MyBB