修改QUERY STRING Codeigniter 3.0.6的MY_Router.php文件

时间:2016-07-14 00:43:30

标签: codeigniter

我使用codeigniter 3.0.6查询字符串,如

index.php?d=directoryt&c=controller
index.php?d=directory&c=controller&m=function

为目录和控制器提供两个get方法有点长。

  

问题有没有办法使用MY_Router.php修改protected function _set_routing()函数来获取它,这样它将通过使用一个查询来获取目录和控制器,如下例所示。

index.php?route=directory/controller
// If need to get function 
index.php?route=directory/controller&m=function

到目前为止尝试了什么

<?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))
            {
                $_route = isset($_GET['route']) ? trim($_GET['route'], " \t\n\r\0\x0B/") : '';

                if ($_route !== '')
                {
                    echo $_route;

                    $this->uri->filter_uri($_route);
                    $this->set_directory($_route);
                }
            }



            // 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();
        }
    }
}

的config.php

$config['allow_get_array'] = TRUE;
$config['enable_query_strings'] = TRUE;
$config['controller_trigger'] = 'c';
$config['function_trigger'] = 'm';
$config['directory_trigger'] = 'd';

// Modifyed in MY_Router.php
$config['route'] = 'route';

1 个答案:

答案 0 :(得分:0)

我有它的工作

socket.on('dostuff', function doStuff(idd)
{
    console.log('who is asking: ' + idd);
    console.log('who am I answering to: ' + socket.id);  
    console.log(socket.id);
    socket.emit('answerstuff');
});