将变量传递给默认的codeigniter控制器

时间:2014-11-09 16:14:17

标签: php codeigniter url

我的codeigniter设置使用默认控制器。它的访问方式如下:

site.com/index.php 

但实际上是:

site.com/project/index

其中index是默认函数。

我想做以下事情:

site.com/project7362

但它确实想要:

site.com/project/index/project7362

其中项目名称是传递给索引函数的变量。但默认情况下,它会将项目名称视为控制器。有没有办法避免这种情况?

基本上我希望完成的是在域名后直接传递变量。用户可以创建项目,我希望可以通过domain.com/project_id

访问该项目

1 个答案:

答案 0 :(得分:1)

  

"基本上我希望完成的是传递一个变量   直接在域名之后。用户可以创建项目,我   希望可以通过domain.com/project_id"

访问该项目

所以另一种方法是让它像。

domain.com/project/id

这将为您添加不同功能的路线提供更大的灵活性 在config / routes中:

$route['project/(:any)'] = 'project/view/$1'; 
项目控制器中的

    function view($id) {

    // clean it
    $id = htmlspecialchars($id) ;

   if ( ! $project = $this->members->returnProjectBy($id) {

       $this->showNoResultsFor($id) ; } 

   else { $this->show($project) ;  } 

   }    

或者 - 另一种方法是将您定义的路线放在第一位,然后将项目放在最后(因为它需要搜索那里的任何内容)

$route['home'] = 'page/home'; 
$route['contact'] = 'contact'; 
// etc etc so you first define your hard coded routes, and then if its not any of those
// you do a search on whatever the value is to find a project 
$route['(:any)'] = 'project/view/$1';

所以你的链接可能是

domain.com/id