我如何才能调用代码点火器中子文件夹内的控制器


How can i call controller inside sub folder in codeigniter

有人能告诉我如何在子文件夹中调用控制器吗。我试图调用控制器文件夹第三层的控制器,我通过谷歌搜索尝试了一些例子,但都不起作用。例如:

http://localhost/project/index.php?/folder1/folder2/folder3/controller.php

applicationaton/core文件夹中创建名为MY_Router.php的文件,并将下面的代码放在其中,它就会工作:--

注意:此解决方案适用于Codeigniter 2.2.0

<?php

Class MY_Router extends CI_Router
{
    Function MY_Router()
    {
        parent::CI_Router();
    }
    function _validate_request($segments)
    {
        if (file_exists(APPPATH.'controllers/'.$segments[0].EXT))
        {
            return $segments;
        }
        if (is_dir(APPPATH.'controllers/'.$segments[0]))
        {
            $this->set_directory($segments[0]);
            $segments = array_slice($segments, 1);
            /* ----------- ADDED CODE ------------ */
            while(count($segments) > 0 && is_dir(APPPATH.'controllers/'.$this->directory.$segments[0]))
            {
                // Set the directory and remove it from the segment array
            $this->set_directory($this->directory . $segments[0]);
            $segments = array_slice($segments, 1);
            }
            /* ----------- END ------------ */
            if (count($segments) > 0)
            {
                if ( ! file_exists(APPPATH.'controllers/'.$this->fetch_directory().$segments[0].EXT))
                {
                    show_404($this->fetch_directory().$segments[0]);
                }
            }
            else
            {
                $this->set_class($this->default_controller);
                $this->set_method('index');
                if ( ! file_exists(APPPATH.'controllers/'.$this->fetch_directory().$this->default_controller.EXT))
                {
                    $this->directory = '';
                    return array();
                }
            }
            return $segments;
        }
        show_404($segments[0]);
    }
}
?>