2011-09-30 3 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, будут доступны в любом контроллере, из которого вы выполняете подкласс.

Без каких-либо конкретных сообщений об ошибках или более подробного описания проблемы, с которой вы сталкиваетесь, я боюсь, что я могу немного помочь.

Смежные вопросы