试图使用_remap创建页面控制器

时间:2012-05-27 00:26:32

标签: codeigniter

我尝试使用http://www.example.com/about等网址为网站创建默认网页控制器。所以,如果没有'关于'控制器,然后在数据库中查找包含该url字符串的页面。

我已将404_override设置为我的'页面'控制器和我使用_remap()函数来确定下一步,加载主页(页面控制器的索引()方法)或加载页面。

然而,如果我在路径中使用不同的控制器(在这种情况下为产品)和方法(http://www.example.com/product/widget,它不是现在)存在)我正在服务于页面控制器的index()方法。

我认为问题来自于我检查所请求的页面是否是我的_remap()中的主页的方式,所以我在重新映射的开头添加了一个echo以查看它是否重要。 _remap()似乎没有被调用。相反,在尝试处理404_override CI时,只显示索引方法。

我有什么想法可以更有效地完成这项工作?

    public function _remap($method)
{
    echo 'Method '.$method;
    if($this->uri->segment(1) == null)
    {
        // $this->index();
    } else {
        $this->view();
    };
}

1 个答案:

答案 0 :(得分:0)

我似乎在这篇博文中找到了一个可行的解决方案:http://pinoytech.org/blog/post/codeigniter-route-everything-except-these-controllers

在路由定义中使用正则表达式允许忽略其他控制器(产品,订单等),同时仍将其他所有内容发送到页面控制器。

$route['^(?!product|order|misc_controller)\S*'] = "page/$1";

还没有测试过,但据我所知它应该可以游泳。