Да.
Создайте файл с именем template.php
в папке views
.
Содержимое template.php
:
$this->load->view('templates/header');
$this->load->view($v);
$this->load->view('templates/footer');
Тогда из вашего контроллера вы можете сделать что-то вроде:
$d['v'] = 'body';
$this->load->view('template', $d);
На самом деле это очень упрощенная версия того, как я лично загружаю все свои виды. Если вы доведите эту идею до крайности, вы можете сделать несколько интересных модульных макетов:
Подумайте, создаете ли вы представление с именем init.php
, содержащее одну строку:
$this->load->view('html');
Теперь создайте представление html.php
с содержанием:
<!DOCTYPE html>
<html lang="en">
<? $this->load->view('head'); ?>
<? $this->load->view('body'); ?>
</html>
Теперь создайте представление head.php
с содержанием:
<head>
<title><?= $title;?></title>
<base href="<?= site_url();?>">
<link rel="shortcut icon" href='favicon.ico'>
<script type='text/javascript'>//Put global scripts here...</script>
<!-- ETC ETC... DO A BUNCH OF OTHER <HEAD> STUFF... -->
</head>
и body.php
представление с содержанием:
<body>
<div id="mainWrap">
<? $this->load->view('header'); ?>
<? //FINALLY LOAD THE VIEW!!! ?>
<? $this->load->view($v); ?>
<? $this->load->view('footer'); ?>
</div>
</body>
И создать header.php
и footer.php
представления в зависимости от ситуации.
Теперь, когда вы вызываете init из контроллера, все тяжелые операции выполняются, и ваши представления будут заключены в теги <html>
и <body>
, ваши верхние и нижние колонтитулы будут загружены в.
$d['v'] = 'fooview'
$this->load->view('init', $d);