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

时间:2013-05-03 19:22:31

标签: php codeigniter

我是codeigniter的新手,我正在尝试编写一个函数,当你访问某个页面时,它基本上会保存一个名称和url到会话数据,然后在屏幕上的一个小部件中报告它。 / p>

它应该作为一种历史功能,用于访问哪些页面以及以何种顺序访问。到目前为止,在处理测试数据时效果很好!但是我想弄清楚如何在每个访问过的页面上调用“添加”功能,这样我们就可以提供访问过的那个页面的名称和URL。有没有办法做到这一点?或者有没有办法在您访问之后报告一组变量,例如页面的名称和URL?

例如:说我访问page1,page2,page3和page6,我希望每个都显示在我的历史记录功能中。在每个页面上我都会加载历史记录视图,我想调用历史记录的控制器函数"add(name,url)"并填写如下内容:

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

但是我知道你不应该从历史记录中访问控制器,因为这不是它应该完成的方式,但我想不出更好的方法来做到这一点。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:9)

我不知道你为什么不在每个控制器上调用它。 但如果要调用当前控制器的函数,则必须以这种方式获取当前控制器的实例:

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

答案 1 :(得分:0)

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

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 

}