Codeigniter HMVC передает данные от модуля к контроллеру

Я создаю приложение в Codigniter с HMVC. В нем я называю модуль внутри другого контроллера. Проблема, с которой я столкнулся, заключается в попытке передать / получить данные, загруженные в модуль. В частности, я загружаю некоторые файлы javascript, которые затем хочу передать вызывающему контроллеру.

Вот упрощенный код:

public function module()
{
...
$this->data['js'] = $this->js_assets;
...
return $this->load->view('module_view', $this->data, true);
}

public function controller()
{
...

$this->load->module('module/module');
$this->data['module'] = $this->module->module();

...
}

Я знаю, что могу получить данные [‘js’] в module_view как $ js, но мне интересно, могу ли я просто передать данные непосредственно в контроллер.

0

Решение

Я хотел бы получить данные от модуля к вызывающему контроллеру.

Да, вы можете сделать это с HMVC.

В вызывающем модуле вы можете организовать такой код (псевдокод):

class Someclass extends CI_Controller {
...
public function show_page()
{
$this->load->module("module");
$js_files = $this->module->get_js_files();
$this->load->view("header", array("js_files" => $js_files));
}
...
}

в вызываемый модуль вы бы написать что-то вроде этого:

class Module extends CI_Controller {
...
public function get_js_files()
{
$scripts = $this->frontend_model->get_scripts();
return $scripts;
}
....
}

(Хотя в этом фантастическом случае было бы разумнее сначала получить данные из модели)


Другой способ, как правильно упомянуто @ wolfgang1983, вызывать другой модуль следующим образом:

Modules::run('modulename/controller/function', $data);

и чтобы получить данные от этого контроллера, вам просто нужно присвоить возвращаемые данные переменной:

$data_received = Modules::run('modulename/controller/function', $data);

Но в этом случае вы не можете получить переменные, только буферизированный вывод (например, загруженные и обработанные файлы представления или отраженные операторы).

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector