将控制器功能转换为codeigniter中的库

时间:2011-09-30 09:46:02

标签: php codeigniter

我正在尝试将此功能((click_add))放入库中,以便我可以从所有控制器中调用它。我已经在库中有get_ads()函数。我尝试了各种方法将click_add(id)函数转换为库并调用它以与get_ads一起查看但不起作用。请帮忙

function __construct() {
    parent::__construct();
    $this->load->library('ads');
    $this->load->model('MGlobal');
}


public function index(){
    $data['banner']= $this->ads->get_ads();
    $this->load->view('test',$data);
}

    //i want this in library but no luck
    public function click_add($ads_id){
    $ads_site = $this->MGlobal->getAds($ads_id);
    $this->MGlobal->add_ads_view();
    redirect($ads_site['url']);
  }

//和视图就像这样

foreach($banner as $k=>$list){    
    echo anchor('test/click_add/'.$list['bannerid'],'<img src="'. $list['image']. '"/>');
}

请建议我如何使用库

实现这一目标

1 个答案:

答案 0 :(得分:3)

记住MVC模式的每个部分的作用也很重要。在 click_add()方法中,您似乎正在渲染视图并导致重定向。这些是最适合控制器而不是库的两件事。渲染视图和重定向是必须由控制器负责的两件事,实际上,您将无法通过URL访问它们,这就是您在此处尝试做的事情。

如果您想在网站中的多个控制器中重复使用此方法,请尝试creating a MY_Controller core class and extending your controllers from that。这样,您在MY_Controller中定义的任何方法都可以在您子类化的任何控制器中使用。

如果没有任何特定的错误信息或者您所遇到的问题的详细描述,我担心我能给您的帮助更多。