Получение виджета CodeIgniter – создание шаблонов / загрузка

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

$this->load->view('header'); $this->load->view('navigation'); $this->load->view('sidenav_open'); $this->load->view('blocks/userinfo'); $this->load->view('blocks/stats'); $this->load->view('sidenav_close'); $this->load->view('content',$data); $this->load->view('footer'); 

Это имеет смысл, но на самом ли деле у меня есть это на каждом из моих контроллеров (страниц)? Не уверен, есть ли способ включить это в начальный контроллер (приветствуется), а затем в других как-то ссылаться на него? Или, может быть, я чего-то не хватает

Вы можете загружать представления из файла вида. например, рассмотрим шаблон общей страницы, называемый page_template.php :

 <html> <body> <div id = "header"> <?php $this->load->view('header');?> <?php $this->load->veiw('navigation');?> </div> <div id = "sidenav"> <?php $this->load->view('sidenav');?> </div> <div id = "content"> <?php echo $content;?> </div> <div id = "footer"> <?php $this->load->view('footer');?> </body> </html> 

Загрузите более динамические области, используя abiltiy для codeigniter, чтобы вернуть представление в качестве переменной в вашем контроллере:

 $template['content'] = $this->load->view('content',$data,TRUE); $this->load->view('page_template',$template); 

Передавая TRUE функции нагрузки, CI вернет данные из представления, а не выводит на экран.

Ваш раздел sidenav может быть его собственным файлом просмотра, sidenav.php, где у вас есть ваши «блоки» жестко закодированные или загруженные, похожие на приведенный выше пример.

Я сделал это в обоих направлениях, в том числе каждый вонючий бит представлений в каждом методе контроллера, и используя шаблон страницы, который загружает под-представления и динамические области, и, безусловно, второй метод делает меня счастливее.

Загрузка просмотров изнутри может привести к путанице.

Расширение класса Controller скрывает большую часть сложности, исходящей от этого подхода, но все же использует идею генерации общих представлений (нижний колонтитул, заголовок, навигационные панели и т. Д.) Путем рендеринга их один раз при каждой загрузке страницы.

В частности, обратитесь к руководству пользователя CI и вики для ссылок на MY_Controller – вы расширяете это, создавая файл MY_Controller.php в каталоге ./libraries.

Там вы можете вызывать фрагменты вида, также используя функцию third-parameter = true вызова load->view() . Вы загружаете их в $this->data – например, загружая нижний колонтитул в $this->data['footer'] . В ваших различных контроллерах продолжайте добавлять данные представления к данным $this->data . В ваших представлениях я обычно использую шаблон, который делает немного иначе, чем скелет HTML и некоторый базовый CSS, а затем выделяет все заголовки заголовка, нижнего колонтитула, навигация и основной контент как переменные, взятые из $this->data

Добавленный бонус – если вы новичок в CI, вы, скорее всего, скоро будете искать, как делать другие вещи, которые MY_Controller сделает легко для вас 🙂

У меня есть страница wiki для упрощения генерации и отображения частичных представлений, как вы пытаетесь сделать здесь, используя MY_Controller по адресу:

https://github.com/EllisLab/CodeIgniter/wiki/Header-and-Footer-and-Menu-on-every-page—jedd