CodeIgniter: вызов нескольких контроллеров за один вызов - PullRequest
0 голосов
/ 24 сентября 2010

Я решаю какую-то архитектурную проблему внутри КИ.Мне нужно иметь возможность создавать экземпляры других контроллеров и их методов в главном контроллере.Например,

*main.php/function index():*
$controller2 = new Controller2();
$data['pre_loaded_data'] = $controller2 ->ajax_get_some_view(array('static'=>true));

Целью этого подхода является создание приложения ajax, которое статически загружает некоторые части экрана при первой загрузке, как часть главной html-страницы, но позже эти части обновляются с помощью методов ajax из различных другихконтроллеры (в настоящее время с параметром array ('static' => false)), например, в качестве ответа на событие onclick на главной странице.

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

Каков наилучший подход для предварительной загрузки данных с других контроллеров в главный контроллер?

Ответы [ 2 ]

3 голосов
/ 24 сентября 2010

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

Вот отличное чтение по базовым классам Фила Стерджена и способы их реализации.

1 голос
/ 26 сентября 2010

Попробуйте поместить такие функции, как get_some_data () в библиотеку, тогда вы сможете без проблем включать и вызывать их из каждого контроллера и каждой функции, отправляя результаты в формате частичного представления (статический случай) или обратно браузер после вызова AJAX.

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

// main/index
$this->load->library('your_library');
$data['foo'] = $this->your_library->get_foo();

// controller2/get_some_ajax_data
$this->load->library('your_library');
echo $this->your_library->get_foo() || '';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...