2011-09-30 11 views
0

ライブラリー内にこの関数((click_add))を入れて、すべてのコントローラーから呼び出せるようにしようとしています。私はすでにライブラリにget_ads()関数を持っています。私はclick_add(id)関数をライブラリに移してget_adsとともに表示するよう呼び出すが、うまくいきません。コントローラー関数をcodeigniterのライブラリーに移動する

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']. '"/>'); 
} 

のようなものです助けてくださいそれは、MVCの各部分の役割を覚えておくことも重要ですどのように私は、ライブラリ

+2

ライブラリの機能にルーティングすることはできません。 – mahadeb

+0

可能な複製:http://stackoverflow.com/questions/7553912/how-to-access-function-from-every-controller-in-codeigniter/7554110#7554110 – thomaux

答えて

3

でそれを達成ん私を提案してくださいパターン。 click_add()メソッドでは、ビューをレンダリングしてリダイレクトを行っているようです。これらは、ライブラリではなくコントローラに最も適した2つのものです。ビューのレンダリングとリダイレクトは、コントローラの責任でなければならない2つのことです。実際には、URLを介してアクセスすることはできません。これはここで行うことです。

サイト内の複数のコントローラ間でこのメソッドを再利用する場合は、creating a MY_Controller core class and extending your controllers from thatを試してください。こうすることで、MY_Controllerで定義したメソッドは、サブクラス化したコントローラで利用できます。

特定のエラーメッセージや問題の詳細な説明がなくても、私があなたに与えることができるもう少しの助けがあります。

関連する問題