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

처럼 내가 라이브러리

+2

라이브러리의 기능으로 라우트 할 수 없습니다. – mahadeb

+0

가능한 중복 : http://stackoverflow.com/questions/7553912/how-to-access-function-from-every-controller-in-codeigniter/7554110#7554110 – thomaux

답변

3

으로 그것은 MVC의 각 부분의 역할을 기억하는 것이 중요하다는 것을 달성 어떻게 저를 제안 해주십시오 무늬. click_add() 메소드에서보기를 렌더링하고 리디렉션을 발생시키는 것처럼 보입니다. 이것들은 라이브러리가 아닌 컨트롤러에 가장 적합한 두 가지입니다. 렌더링보기 및 리디렉션은 컨트롤러의 책임이어야하는 두 가지 사항이며 실제로 여기에서하려는 URL을 통해 액세스 할 수 없습니다.

사이트의 여러 컨트롤러에서이 방법을 다시 사용하려면 creating a MY_Controller core class and extending your controllers from that을 시도하십시오. 그렇게하면, MY_Controller에 정의한 모든 메소드는 서브 클래스를 작성한 모든 컨트롤러에서 사용할 수 있습니다.

특정 오류 메시지 나 문제에 대한 자세한 설명없이 내가 드릴 수있는 도움이 조금 더 있습니다.

관련 문제