php – 如何在CodeIgniter中使用多个控制器?

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 如何在CodeIgniter中使用多个控制器?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我是CodeignITer的新手,我刚刚通过他们的一些用户指南来帮助我了解如何做多个控制器.

我已经想出如何使用他们的一个示例加载多个页面.这是我的认控制器,名为Site.PHP

class Site extends CI_Controller {

public function index($page = 'home') {
    if ( ! file_exists(APPPATH.'/views/'.$page.'.PHP')) {
        // Whoops,we don't have a page for that!
        show_404();
    }

    $data['title'] = ucFirst($page);

    $this->load->view('header',$data);
    $this->load->view($page,$data);
    $this->load->view('footer',$data);

    }
}

这一切都适用于我的routes.PHP

$route['default_controller'] = 'site';
$route['(:any)'] = 'site/index/$1';

例如,当我访问localhost / website / index.PHP / about时,我有一些正确加载的视图.

现在,进一步了解控制器和URI路由.我创建了一个新的控制器,application / controllers / MyController.PHP,它的编码如下:

class MyController extends CI_Controller {
    public function index() {
        $this->load->view('header');
        $this->load->view('my_controller');
        $this->load->view('footer');
    }
}

问题是,我不知道如何访问此页面.
我知道认的URI模式是example.COM/class/function/id/但是我尝试过localhost / website / mycontroller它并不起作用. apache返回404.我尝试了很多操作,甚至像输入localhost / website / index.PHP / mycontroller一样愚蠢,但当然这不起作用.

使用多个控制器的正确方法是什么?我在这做错了什么?请帮助我学习,谢谢!

(另外,这是我在StackOverflow上的第一个正确的问题,如果我做错了什么或格式化错误,请告诉我!)

解决方法

问题是这条规则:

$route['(:any)'] = 'site/index/$1';

拦截所有内容…并将其作为索引方法的参数传递给站点控制器.所以如果你打电话

/mycontroller

它实际上将映射到:

/site/index/mycontroller

路由在应用程序查看控制器之前发生,并且路由规则在编写时被考虑.

因此,您需要将此规则放在规则列表的最底部,以便让其他规则起作用.所以在前面加上这个:

$route['mycontroller'] = 'mycontroller';
$route['(:any)'] = 'site/index/$1';

应该可以正常工作(尽管是非常不寻常的方法,但你的全局规则也是如此),因为它首先检查所请求的URL是否是/ mycontroller,如果是,它将调用myController;否则它将表现得像您的站点控制器一样.

脚本宝典总结

以上是脚本宝典为你收集整理的php – 如何在CodeIgniter中使用多个控制器?全部内容,希望文章能够帮你解决php – 如何在CodeIgniter中使用多个控制器?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。