我正在构建导航菜单,它包含将从数据库中拉出的类别,例如
Home + Product
- Ham
- Sausage
- etc
- etc
--------Database Schema------
+----+-------------------------+------+
| id | name | show |
+----+-------------------------+------+
| 1 | ham | 1 |
| 2 | sausages | 1 |
+----+-------------------------+------+
这是我的分类控制器
class Categories extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model('category');
}
public function index()
{
// 1. pulling data from db assigned to $data
$data['categories'] = $this->category->get_categories();
// 2. passing $data to header view to build dynamic navigation menu
$this->load->view('header',$data);
// 3. passing $data to the view category to render some other content
$this->load->view('category',$data);
// 4. passing $data to footer view to build dynamic footer menu
$this->load->view('footer',$data);
}
public function get($id)
{
$this->load->view('header');
}
}
------------ views / header.php页面(代码如下所示)
<ul>
<?php foreach($categories as $item): ?>
<li><a href="categories/get/<?php echo $item->id;?>"><?php echo $item->name;?></a></li>
<?php endforeach; ?>
</ul>
-----------问题是 当我从菜单中选择一个类别例如火腿时,我看到网址就像这样
127.0.0.1/cms/categories/get/1 在类别页面
当我点击例如火腿时,我将转移到此网址
127.0.0.1/cms/categories/get/1
但当我将鼠标悬停在菜单上时,我会看到
127.0.0.1/cms/categories/get/categories/get/1 这是导航菜单的问题
你看到伙计们,{categories}的控制器以及{get}的动作 每个控制器和动作重复两次,
我的问题 1-我在这里做错了什么 -
2-如何正确地通过整个应用程序共享此动态菜单,我应该把这段代码放在哪里。另请注意,此菜单将从数据库中创建
非常感谢高级
答案 0 :(得分:0)
您只需要修复视图
<ul>
<?php foreach($categories as $item): ?>
<li><a href="<?php echo base_url();?>categories/get/<?php echo $item->id;?>"><?php echo $item->name;?></a></li>
<?php endforeach; ?>
</ul>
正确加载它...我建议你在视图文件夹中创建一个文件调用模板,我们称之为template.php
public function index()
{
// 1. pulling data from db assigned to $data
$data['categories'] = $this->category->get_categories();
$data['page_name'] = 'WHATEVER_PAGE_NAME_YOU_HAVE';
// send it to the template instead....
$this->load->view('template',$data);
}
模板文件
<html>
<head></head>
<body>
$this->load->view('header');
$this->load->view($data['page_name']);
$this->load->view('footer');
</body>
</html>
HEADER.PHP文件将是这样的....
<div>HEADER CONTENT </div>
WHATEVER_PAGE_NAME_YOU_HAVE.PHP文件将是这样的....
<h1>TESTING</h1>
FOOTER.PHP文件就像这样......
<div>Footer CONTENT </div>
为了使其更易于管理,请创建库并在每个类的costructor中调用它,或者您可以自动加载它。加载后,您可以调用该函数并获取数据..如果您需要一个示例,请告诉我们?或者你可以阅读http://ellislab.com/codeigniter%20/user-guide/general/creating_libraries.html 希望能帮助......
答案 1 :(得分:0)
我为这个动态菜单创建了一个小型库。如果有人仍在寻找这个答案,希望对他们有所帮助。
你可以从Github获取所有代码。
https://github.com/hassann201/Egenius_Dynamic_Menu
由于