Вы действительно хотите скопировать/вставить много $ this-> load-> view() в любую функцию контроллера? Это код спагетти. Вы можете попробовать следующее: например, у нас есть контроллер main.php в качестве контроллера по умолчанию. Этот главный контроллер содержит основную функцию:
public function index()
{
ob_start();
$this->load->model('mainmodel');
$data = $this->mainmodel->_build_blocks(); //return array with needed blocks (header, menu, content, footer) in correct order
foreach ($data->result_array() as $row) {
$this->load->module($row['block_name']);
$this->name = new $row['block_name'];
$this->name->index();
}
ob_end_flush();
}
Таким образом, друг с другом контроллер также иметь функцию (индекс), который может направить действия в зависимости от сегментов URL-адрес, и т.д. подготовки PARAMS
нижнего колонтитула контроллера в качестве примера (я использую Smarty в качестве шаблона двигателя):
public function index()
{
$this->mysmarty->assign('year', date("Y"));
$this->mysmarty->view('footer');
return true;
}
контроллер контента будет иметь:
public function index()
{
$name = $this->uri->segment(1, 'index');
$act = $this->uri->segment(2, 'index');
$this->load->module($name);
$this->name = new $name;
$pageData = $this->name->_show($act);
if ($pageData)
{
$this->mysmarty->assign($name, $pageData);
}
$this->mysmarty->view($name);
}
То значит, что если вы хотите, чтобы показать http://site.name/page/contactus, мы делаем следующий:
1) main.php начать цикл, необходимых блоков
2) во-первых, мы показываем header.tpl контроллером заголовка
3), то мы покажем меню
4) Затем мы вызываем контроллер контента, который анализирует URL-адрес, обнаруживает, что он должен вызывать функцию _show() в контроллере страницы, и передать ему действие = 'contactus'. _show() функция может содержать некоторый ключ/конструкцию корпуса, которые показывают шаблоны зависит от названия действия (contactus.tpl в данном случае)
5) в конце концов, мы показываем шаблон колонтитула
В таком случае мы имеем гибкую структуру , Все контроллеры должны иметь функции index(), и все контроллеры, которые могут быть вызваны в контенте, должны иметь функцию _show ($ act). Это все.