如何管理codeigniter路由

时间:2014-12-07 17:15:53

标签: php codeigniter

我打算将控制器定义为

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Lookup extends CI_Controller {
public function __construct()
{       
    parent::__construct();
    if(!($this->php_session->get('logged_in')))
    {
        redirect('login', 'refresh');
    }
}

public function add($lookup=null)
{

}

function edit($lookup=null,$id=null)
{

}

function save($lookup=null,$id=null)
{

}

function list($lookup=null)
{

}

此控制器用于不同的查找表&#39;操作。查询表可以是教育,宗教,种姓等...... 根据规划,给定的函数具有 $ lookup 作为将定义要实现的查找表的参数。 作为MVC框架,路由定义为: Controller / Method / Params

我正在寻找以下解决方案; 如果URI传递为:

**lookup/education/add**   must route to **lookup/add/education** Where education is parameter for add function
**lookup/education/edit/1001 must route to  **lookup/edit/education/1001 where education and 1001 are parameters for edit function.

如果有人回答,我会很感激。谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用.htaccess或其他一些apache配置文件来执行此操作。您将需要类似于以下内容的内容:

RewriteEngine on
RewriteRule ^/lookup/(.*)/(.*)/(.*)$ /lookup/$2/$1/$3 [L]

您可能还需要这些用于调试:

RewriteLog /var/somewhere/some.log
RewriteLogLevel 9

答案 1 :(得分:0)

在不质疑整个方法的完整性的情况下(如评论中所述),您可以使用CI routing来实现此目的:

$route['lookup/(:any)/(:any)/(:any)'] = "lookup/$2/$1/$3";