Я работаю над установкой 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 () не буферизируются. Спасибо
Да, это именно так, как вы описываете, что интересно, и я никогда не наблюдал, потому что я бы не реализовал то, что вы сделали, в сценарии реального мира.
То, что вы могли бы сделать (и это работает, потому что я пробовал), это создать 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);
}
}
Таким образом, вы можете создать свой шаблон так, чтобы он уже включал ваш верхний и нижний колонтитулы, поскольку они являются статическим содержимым в вашем примере. Затем просто создайте регионы, которые вы заполняете динамически.
Это приведет вас к использованию модуля шаблона для обработки всего этого за вас. Это был не ваш вопрос, но надеюсь, что это даст вам пищу для размышлений.
Других решений пока нет …