2011-01-20 126 views
0

我目前正在为一个客户端的CMS工作,我打算使用Codeigniter来构建它,它只是一个快速项目,所以我没有寻找一个强大的解决方案。codeigniter路由

要创建页面,我需要保存页面详细信息,并根据与mysql表中的slug匹配的slug来拉出正确的页面。

然而,我的问题是,为了这个工作,我必须从URL控制器然后传递给模型,这意味着我也有控制器在URL中,我不想要的是它有可能从路由URL中删除控制器?

所以

/页/我们的层高

成为

/我们的层高

这可能

+0

我问了一个类似的问题 - 你可能会发现答案很有用:http://stackoverflow.com/questions/3725050/codeigniter-best-routes-configuration-for-cms – BrynJ 2011-01-20 17:04:24

回答

1

是的,当然。我最近自己建立了一个Codeigniter驱动的CMS。路线的全部目的是改变你的网址的外观和功能。它可以帮助您摆脱控制器/函数/参数/参数范例,并让您选择您希望网址的外观如何。

  1. 在控制器目录下创建一个页面控制器
  2. 将一个_remap功能,这里面如果您使用的是最新版本的CI 2.0从到位桶赶控制器
  3. 所有请求,那么你的routes.php文件,你可以把它放在文件底部:$routes['404_override'] = "pages";,然后所有对不存在的控制器的调用都会被发送到你的控制器,然后你可以检查是否存在URL块。您还应该将页面设置为默认控制器值。

查看我几个月前回答的similar question here的回答,例如我在Codeigniter CMS中使用的代码和工作代码。

0

这是我在最近的一个项目中使用的代码。我从某处借了它;不记得在哪里。

function _remap($method) 
{ 
    $param_offset = 2; 

    // Default to index 
    if (! method_exists($this, $method)) 
    { 
    // We need one more param 
    $param_offset = 1; 
    $method = 'index'; 
    } 

    // Since all we get is $method, load up everything else in the URI 
    $params = array_slice($this->uri->rsegment_array(), $param_offset); 

    // Call the determined method with all params 
    call_user_func_array(array($this, $method), $params); 
} 

然后,我index功能就是你干脆把page功能。

2

我会推荐这样做。

假设您有:控制器“页面” /法“秀”

$route['page/show/:any'] = "$1"; 

或方法,我不推荐指数,如果您有类似的新闻,添加以下。

$route['news/show/:any'] = "news/$1"; 

就是这样。