Переход к заголовку при использовании файла шаблона для codeigniter - PullRequest
1 голос
/ 07 февраля 2012

Я начинаю изучать codeigniter и всю инфраструктуру MVC.То, что я ищу, чтобы найти, как добавить данные в файл заголовка без необходимости добавлять их на каждый контроллер.

Вот мой макет файла

application
  --controller
    --main.php
  --view
    --includes
      --header.php
      --footer.php
      --template.php
    --main.php

В моем файле main.php яИмею

function main() {
    $data['mainView'] = "main";
    $this->load->view('includes/template',$data);
}

В моем файле template.php

<?PHP
 $this->load->view('includes/header');
 $this->load->view($mainView,$data);
 $this->load->view('includes/footer');

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

Спасибо!

1 Ответ

3 голосов
/ 07 февраля 2012

Я видел два хороших способа сделать это:

1.Добавьте его к классу MY_Controller, который расширяют все ваши соответствующие контроллеры:

<?php

class MY_Controller extends CI_Controller {

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

        $this->load->vars(array(
            'foo1' => 'bar1',
            'foo2' => 'bar2'
        ));

        // Now, all your views have $foo1 and $foo2
    }
}

2.Добавьте его в класс MY_Output, что имеет смысл, поскольку полная HTML-страница отображается не так, как, скажем, частичная AHAH или ответ AJAX:

<?php

class MY_Output extends CI_Output {

    public function _display($output = '')
    {
        if ($output == '')
        {
            $output = $this->final_output;
        }

        $CI =& get_instance();

        // Run checks here (on the Input class, likely) to see if the
        // response expects application/json, text/html, etc.

        $output = $CI->load->view('includes/header', array(
            'foo1' => 'bar1',
            'foo2' => 'bar2'
            ), TRUE) . $output;

        $output .= $CI->load->view('includes/footer', NULL, TRUE);

        parent::_display($output);
    }
}

Этот способ также имеет преимуществоиз-за того, что нет необходимости включать верхний / нижний колонтитул в каждое из ваших представлений, и легче изменить направление позже.

Ура!

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