2012-08-25 5 views
0

У меня есть макет here, и я хочу вставить menu в макет меню. В последнее время я использую набор фреймов для решения этой проблемы, но на этот раз я хочу попробовать использовать div вместо набора фреймов, а также через CodeIgniter.Как загрузить страницу в div для CodeIgniter

Когда меню успешно, так что я могу загрузить форму в макет формы: D

Как сделать это через рамки CodeIgniter?

+3

Если вы не знаете, как это сделать, вы не понимаете основы MVC. Я предлагаю вам прочитать [CodeIgniter documentation] (http://codeigniter.com/user_guide/) (в частности, части MVC). –

+1

Я бы предположил, что по структуре этого вопроса вы еще не используете codeigniter. Вы уверены, что готовы к этому? –

+0

Какой код вы пробовали? –

ответ

1

у вас есть два варианта, чтобы напрямую загрузить вид внутри вида, как этот

<div id="sidebar"> 

<?php $this->load->view('template/sidebar.php'); ?> 

</div> 

Или передать его в качестве переменной из контроллера и эхо его в представлении как этот

function index(){ 

$data['sidebar'] = $this->_get_sidebar(); 
$this->load->view('home',$data); 
} 

function _get_sidebar(){ 

return $this->load->view('template/sidebar',TRUE); 

} 

и на представлении

<div id="sample"> 
    <?php echo $sidebar;?> 
</div> 

Goodluck!

0

Вы не загрузили страниц внутри div, но просмотров. Я бы так:

Контроллера main.php

Class Main extends CI_Controller{ 

    function index() 
    { 
    $this->load->model('mymodel'); 
    $data['menu_items'] = $this->mymodel->get_menu(); 
    $this->load->view('layout', $data); 
    } 
} 

Теперь у вас есть $ menu_items переменные, доступные в вашем зрении layout.php. Оптимальным подходом было бы загрузить представление «частичных» внутри «главного» представления (все представления, загруженные внутри другого, имеют доступную им переменную). С.О., что-то вроде этого:

просмотров/layout.php

<!DOCTYPE html> 
<html><head><title></title></head> 
<body> 
    <header> 
     <?php $this->load->view('partials/header'); ?> 
    </header> 

    <section> 
    <aside> 
    <nav> 
     <?php $this->load->view('partials/menu');?> 
    </nav> 
    </aside> 
     <article> 
     <?php $this->load->view('partials/content');?> 
     </article> 
    </section> 
    <footer> 
     <?php $this->load->view('partials/footer');?> 
</footer> 
</body> 
</html> 

Теперь вы создаете партиалы внутри просмотра папок/обертоны /, и они будут иметь переменные передаются в контроллере на макете ,

файл views/partials/menu.php

<ul> 
    <?php foreach($menu_items as $item): ?> 
    <li><?php echo $item['name'];?></li> 
    <?php endforeach;?> 
</ul> 
+0

Вам не нужно передавать переменную '$ data' в представление, чтобы она была доступна? так '$ this-> load-> view ('layout')' будет '$ this-> load-> view ('layout', $ data);' – dangel

+0

Конечно, я просто забыл написать Это. Ответ обновлен, спасибо –

Смежные вопросы