CodeIgniter HMVC

Я работаю над установкой CI + HMVC. Когда я использую вызов функции HMVC:

Modules::run("header");

Он ничего не печатает на экране. Однако, если я бегу:

echo Modules::run("header");

или же:

$x = Modules::run("header");

Тогда это работает.

Это код, который я пытаюсь заставить работать:

// HOME MODULE
class Home extends MX_Controller{
public function index(){
Modules::run("header");
$this->load->view('home_view');Modules::run("header");
}
}
// HEADER MODULE
class Header extends MX_Controller{
public function index(){
$this->load->view('header_view');
}
}

// FOOTER MODULE
class Footer extends MX_Controller{
public function index(){
$this->load->view('footer_view');
}
}

Но когда я запускаю его, я вижу только содержимое «home_view». Нет верхнего и нижнего колонтитула.

Я не могу использовать вышеуказанный подход для его решения, потому что $ this-> load-> view () буферизируется, что заставляет мой контент «home_view» показываться внизу моего HTML, ниже моего нижнего колонтитула, и это портит вещи.

Пожалуйста, помогите мне выяснить, почему Модули: run () не буферизируются. Спасибо

1

Решение

Да, это именно так, как вы описываете, что интересно, и я никогда не наблюдал, потому что я бы не реализовал то, что вы сделали, в сценарии реального мира.

То, что вы могли бы сделать (и это работает, потому что я пробовал), это создать template_view примерно так … И это очень урезано …

template_view.php

<?= isset( $header ) ? $header : ''; ?>

<?= isset( $content ) ? $content : ''; ?>

<?= isset( $footer ) ? $footer : ''; ?>

Затем вы должны построить разделы своей страницы и создать окончательный результат.

Контроллер Home.php

class Home extends MX_Controller {

public function __construct() {
parent::__construct();
}

public function index() {
// Build the Page Sections
$data['header']  = Modules::run("header");
$data['footer'] = Modules::run("footer");
$data['content'] = $this->load->view('home_view', '', true);
// Display the final Page
$this->load->view('template_view',$data);
}
}

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

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

2

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

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

По вопросам рекламы [email protected]