2013-05-03 36 views
1

我是codeigniter的新手,我试图编写一个函数,基本上会保存一个名称和URL到会话数据,每当你访问某个页面,然后报告回来在屏幕上的一个小部件。从codeigniter中的视图调用控制器功能

它应该作为一种历史功能,用于访问哪些页面以及按什么顺序访问。到目前为止,在处理测试数据时,它非常棒!但我想弄清楚如何在被访问的每个页面上调用“添加”功能,因此我们可以提供访问过的页面的名称和URL。有没有办法做到这一点?或者,有什么方法可以在访问完一个页面后报告一组变量,如名称和网址?

例如:说我访问了page1,page2,page3和page6,我希望每个人都显示在我的历史记录功能中。在相应的网页我会载入历史的观点,我想打电话给历史的控制器功能"add(name,url)"在像这样填写的:

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

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

+1

为什么不在你的控制器行为中添加与页面相关的条目? – 2013-05-03 19:26:29

回答

9

我不知道你为什么不在每一个控制器上调用它。 但如果你要拨打的电流控制器的功能,你必须让电流控制器的情况是这样的:

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

比方说,我有一个包含目录数据的迭代器对象。据我所知,没有内置的函数可以在迭代器中的每个项目上调用函数。但是,当我在视图中迭代它们时,我可以访问每个元素,因此在那里调用控制器的“映射函数”是有意义的。什么是更好的方法? – 2014-06-08 19:37:54

+0

非常感谢。 – 2015-12-04 06:01:00

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 

} 
相关问题