Я создал представление с именем template.php со следующим кодом.
<?php
$this->load->view('header');
$this->load->view($middle);
$this->load->view('footer');
?>
и в контроллере я использую как
public function index()
{
$data['middle'] = 'home';
$this->load->view('template',$data);
}
Итак, мой вопрос, как передать данные сеанса, такие как $data['session'] = $this->session->all_userdata();
в шапку.
Я могу передать данные сеанса, загрузив каждое представление в контроллер. а как в шаблонном файле.?
Лично я бы не включил верхний и нижний колонтитулы из представления. Как мне этого добиться, это расширить контроллер. Как это;
class MY_Controller extends CI_Controller {
public function __construct()
{
parent::__construct();
}
public function show_view($view, $data = array())
{
$this->load->view('header', $data);
$this->load->view($view, $data);
$this->load->view('footer', $data);
}
}
Теперь вы можете загрузить любое представление, и мы передаем массив $ data как в верхний, так и в нижний колонтитулы.
$this->show_view('homepage', $data);
Надеюсь, это поможет.
В любом из ваших представлений вы сможете использовать сессионный помощник.
echo $this->session->userdata('foo');
Вы можете использовать такой трюк, как передача массива данных из контроллера и повторная передача внутреннего массива в представлении template.php.
public function index()
{
$data['middle'] = 'home';
$this->load->view('template',array('data' => $data)); //trick to get whole data array in your template view.
}
тогда в вашем представлении шаблона
<?php
$this->load->view('header',$data);
$this->load->view($middle);
$this->load->view('footer');
?>