Codeigniter控制器URI路由问题

时间:2013-07-03 15:27:10

标签: codeigniter controller routes codeigniter-routing

当我调用控制器的方法时遇到问题。顺便说一句,这个控制器被路由。

路线

$route['admin/company'] ='company';

控制器

class Company extends CI_controller {

    public function __construct() {
        parent::__construct();
        session_start();

        /** Check if user is logged in */
        if ($this->session->userdata('user') != "") {

            $this->load->model('my_model');
            if ( $this->uri->segment(1) != "admin" ) {
              redirect('admin/company/'.$this->uri->segment(2));
            }

        } else redirect('/');
    }
        public function index() { Some coding here............  }
        public function addnew() { Some coding here...........}
        public function process() { Some coding here...... }
    }

当我打电话给“localhost / company”时,它工作正常,并将我重定向到“localhost / admin / company,这很棒。但是,当我尝试调用它的方法时,它会显示404错误消息。

示例:当我去链接时:localhost / admin / company / addnew

路线上缺少什么?还是在控制器?或其他什么?

谢谢, 詹姆斯

3 个答案:

答案 0 :(得分:1)

如果适用于所有用例,请在routes.php中使用简单的包罗万象规则:

$route['admin/company/(.+)$'] = "company/$1";

答案 1 :(得分:0)

您必须为控制器中的每个功能添加路线。

$route['admin/company/addNew'] ='company/addNew';
$route['admin/company/process'] ='company/process';

这很烦人。更好的是,在“controllers”文件夹中创建一个“admin”文件夹。将控制器放在文件夹上。因此,您可以使用URL“localhost / admin / company”和所有方法访问您的控制器,而无需重新路由。

如果它最初不起作用,请在“admin”文件夹中创建一个控制器,其名称与路径文件(default_controller)中的名称相同。

答案 2 :(得分:0)

创建一个管理目录并添加$ route [“company”] =“admin / company”