在codeigniter中从视图调用控制器函数


calling a controller function from a view in codeigniter

我是一个新手编码,我试图写一个函数,基本上会保存一个名称和url的会话数据,每当你访问某个页面,然后报告它回到屏幕上的一个小部件。

它应该作为一种历史函数,用于记录访问了哪些页面以及访问顺序。到目前为止,当使用测试数据时,它工作得很好!然而,我试图弄清楚我如何可以调用"添加"功能上的每个页面被访问,所以我们可以提供该页面被访问的名称和url。有什么办法可以做到吗?或者是否有任何方法可以在您访问页面后报告一组变量,例如页面的名称和url ?

例如:假设我访问了pagee1, page2, page3和page6,我希望它们每个都显示在我的历史记录函数中。在这些页面上,我将加载历史视图,我将调用历史控制器函数"add(name,url)"并像这样填充它:

add('page1','page1.php')

但是我知道你不应该从历史中访问控制器因为这不是应该做的方式,但是我想不出更好的方法来做到这一点。

我不知道为什么不在每个控制器上调用这个。但是如果你想调用当前控制器的一个函数,你必须这样获取当前控制器的实例:

<?php
$CI =& get_instance();
$CI->method($param);
?>

最简单的方法是在类的构造函数中放置一个方法。这样,无论你在做什么,它总是排在第一位的。记住,你可以在控制器中做的任何事情——会话、验证等——你都可以在模型中做。

function __construct() {
parent::__construct();
// load model that has page tracker methods
$this->load->model( 'pagetracker_m' );
// call the method to track the pages, and have it return the results
if ( ! $this->history = $this->pagetracker_m->_trackpage(); ) {   
    echo 'Error getting history ' ; }
 } // end construct

 function something() {
// pass history to $data, then use echo $history->firstpage, etc in view
$data['history'] = $this->history ;
   // call your view etc 
}