Как динамически загружать несколько представлений в CI 3.0.x

Я пытаюсь динамически загружать несколько представлений в CI 3. Но у меня есть некоторые проблемы. Я расширил CI_controller, который обрабатывает макет:

public function layout() {
    $this->template['page_header'] = $this->load->view('global/header', $this->data, true);
    if (is_array($this->page_content)) {
      foreach ($this->page_content as $key => $value) {
        $this->template['page_content'][$key] = $this->load->view($value, $this->data, true);
      }
    }
    else {
      $this->template['page_content'] = $this->load->view($this->page_content, $this->data, true);
    }
    $this->template['page_footer'] = $this->load->view('global/footer', $this->data, true);
    $this->load->view('global/layout', $this->template);
  }

В контроллере, расширяющем MY_Controller, у меня есть:

$this->page_content = array('cards/cards3', 'cards/cards1', 'cards/cards2');
$this->layout();

В представлении у меня есть:

if (is_array($page_content)) {
   foreach ($page_content as $content) {
      echo $content;
   }
}    
else {
   echo $page_content;
}

Проблема в том, что в представлении я получаю последний элемент в массиве. В данном случае cards/cards2.

Есть идеи, почему?


person Rick    schedule 24.02.2016    source источник


Ответы (1)


Догадаться. В My_controller я не понял, что представления могут быть объединены в строку.

ТАК я изменил его на:

$this->template['page_content'] = '';
foreach ($this->page_content as $content) {
   $this->template['page_content'] .= $this->load->view($content, $this->data, true);
}
person Rick    schedule 24.02.2016