ここにレイアウトがあり、メニューをメニュー レイアウトに挿入したいと考えています。最近はこれを解決するためにframesetを使っていますが、今回div
はframesetの代わりにCodeIgniterを使って試してみたいと思います。
メニューが成功したら、フォームをフォームレイアウトにロードできます:D
CodeIgniter フレームワークを介してこれを行うにはどうすればよいですか?
このようにビュー内にビューを直接ロードするという2つの選択肢があります
<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>
幸運を!
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);
}
}
これで、ビューの layout.php で $menu_items 変数を使用できるようになりました。きちんとしたアプローチは、「マスター」ビュー内に「部分」ビューをロードすることです(別のビュー内にロードされたすべてのビューには、変数が利用可能です)。SO、次のようなもの:
ビュー/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>
ここで、フォルダー view/partials/ 内にパーシャルを作成すると、コントローラーで変数がレイアウト ビューに渡されます。
ファイルviews/partials/menu.php
<ul>
<?php foreach($menu_items as $item): ?>
<li><?php echo $item['name'];?></li>
<?php endforeach;?>
</ul>