перенос функции контроллера в библиотеку в codeigniter - PullRequest
0 голосов
/ 30 сентября 2011

Я пытаюсь поместить эту функцию ((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 Ответ

3 голосов
/ 30 сентября 2011

Также важно помнить о роли каждой части шаблона MVC.В вашем click_add () метод выглядит так, как будто вы визуализируете представление и вызываете перенаправление.Это две вещи, которые лучше всего подходят для контроллера, а не для библиотеки.Рендеринг представлений и перенаправление - это две вещи, которые должны быть обязанностью контроллера, и, действительно, вы не сможете получить к ним доступ через URL, что вы и пытаетесь сделать здесь.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...