代码控制器:控制器内的负载控制器

2022-08-30 11:26:06

我有一个控制器,其操作显示一组特色产品。但是,产品通过控制器进行管理,包括专有模型和视图。homeindexproduct

如何从控制器中的操作中访问信息?实例化将不起作用,因为该类不是在运行时加载的,并且 CodeIgniter 没有提供动态加载控制器的方法。将类放入库文件中也不起作用。productindexhomeproductproduct

确切地说,我需要将产品视图(填充由控制器处理的数据)插入到索引视图中。我正在运行CodeIgniter 2.0.2。product


答案 1

像这样加载它

$this->load->library('../controllers/instructor');

并调用以下方法:

$this->instructor->functioname()

这适用于CodeIgniter 2.x


答案 2

如果您有兴趣,可以使用一个完善的包将其添加到 Codeigniter 项目中,以处理此问题:

https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/

Modular Extensions使CodeIgniter PHP框架模块化。模块是一组独立的组件,通常是模型、控制器和视图,排列在应用程序模块子目录中,可以放入其他 CodeIgniter 应用程序中。

好吧,所以最大的变化是,现在你将使用模块化结构 - 但对我来说,这是可取的。我已经使用CI大约3年了,无法想象没有模块化扩展的生活。

现在,下面是处理直接调用控制器以呈现视图部分的部分:

// Using a Module as a view partial from within a view is as easy as writing:
<?php echo modules::run('module/controller/method', $param1, $params2); ?>

这就是它的全部内容。我通常用它来加载小的“小部件”,比如:

  • 活动日历
  • 最新新闻文章列表
  • 时事通讯注册表格
  • 民意调查

通常,我为每个模块构建一个“小部件”控制器,并仅将其用于此目的。


推荐