2015-09-23 2 views
0

Я использую Code Igniter как основу для проекта, над которым я работаю. Я немного новичок в мире MVC, но изучаю, когда я иду.Использование общих функций (контроллеров) в воспламенителе кода

В моем проекте у меня есть контроллер переднего конца и контроллер админа.

На переднем конце у меня есть форма регистрации, которая имеет около 5 выпадающих меню, которые заполняются вызовом базы данных. В административной части вещей я показываю запись, представленную пользователем, а также предварительный выбор опции в выпадающем списке, который был выбран.

Для этого мне пришлось также заполнить выпадающие списки в контроллере администратора.

Здесь я задаю вопрос. В подобном сценарии я по существу имею 3 идентичные функции в контроллере и контроллере администратора.

Как я могу создать общий или контроллер, к которому имеют доступ оба этих контроллера?

Вот пример общей функции:

public function fetchSites($org = null) 
{ 
    if (!$org) { 
     if (null !== $this->input->post('org')) { 
      $sites = $this->support_model->getSites($this->input->post('org')); 
      header('Content-Type: application/json'); 
      echo json_encode($sites); 
     } 
    } else { 
     $sites = $this->support_model->getSites($org); 
     return $sites; 
    } 
} 

И передняя часть и доля бэкенд ту же модель, только разные контроллеры.

Я изучил создание контроллера в application/core, но я не мог понять, как получить доступ к данным с этого контроллера.

ответ

0

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

Что-то наряду с этим в вашем помощнике файле:

function sharedFunctionality($org = null) 
{ 
    $CI = & get_instance(); 
    $CI->load->model('path/to/support_model'); 
    if (!$org){ 
     $sites = $CI->support_model->getSites($CI->input->post('org')); 
     header('Content-Type: application/json'); 
     echo json_encode($sites); 
    } else { 
     $sites = $CI->support_model->getSites($org); 
     return $sites; 
} 
} 

В обеих контроллерах вам нужно будет только позвонить помощнику, а затем функции:

$this->load->helper('nameOfHelper'); 
$sites = sharedFunctionality($this->input->post('field')); 

Больше информации для создания помощника файл: https://ellislab.com/codeigniter/user-guide/general/helpers.html

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