如何在codeigniter中调用子文件夹中的控制器

时间:2015-03-27 10:29:27

标签: php codeigniter

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

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

1 个答案:

答案 0 :(得分:1)

使用名称MY_Router.php在 applicaiton / core 文件夹中创建文件,并在其中放置代码,它将起作用: -

注意:此解决方案适用于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]);
    }
}

?>