gpt4 book ai didi

Codeigniter 动态导航

转载 作者:行者123 更新时间:2023-12-02 05:35:43 25 4
gpt4 key购买 nike

我是 codeigniter 的新手。我正在尝试使用 mysql 数据库编写一个应用程序。在我的网站中,我想将菜单用作:

+Homepage
+About
+Services
+Education services
+neurofeedback
+biofeedback

我需要一些信息来理解。我使用页面 Controller 作为主页面 Controller :

<?php 

class Pages extends CI_Controller {

public function view($page = 'home')
{$this->load->view('templates/header', $data);
$this->load->view('pages/'.$page, $data);
$this->load->view('templates/footer', $data);

我的问题是:

1) 菜单 Controller 必须在页面 Controller 内编码还是单独编码?

2) 我如何从数据库制作菜单 Controller ?

3) 如何关联菜单id和页面id?

我做了很多研究,但我需要更多的理解。

感谢您的帮助。

编辑:正如您所说,我已经使用了 MY_Controller。

这是我的页面 Controller :

class Home extends MY_Controller {
function __construct() {
parent::__construct();
}

public function view($page = 'home')
{
$this->load->helper('text');
$data['records']= $this->services_model->getAll();
if ( ! file_exists('application/views/pages/'.$page.'.php'))
{
// Whoops, we don't have a page for that!
show_404();
}

$data['title'] = ucfirst($page); // Capitalize the first letter


$this->load->view('pages/'.$page, $data);


}

}

最佳答案

where the menu controller must be coded inside pages controller or seperate one?

假设您有一个所有页面都必须遵循的模板,我建议您这样做。

<强>1。创建一个基本 Controller

在 ./application/core/文件夹中,创建一个名为 MY_Controller 的文件

class MY_Controller extends CI_Controller {

protected $data = array();

function __construct() {
parent::__construct();
}

function render_page($view) {
//do this to don't repeat in all controllers...
$this->load->view('templates/header', $this->data);
//menu_data must contain the structure of the menu...
//you can populate it from database or helper
$this->load->view('templates/menu', $menu_data);
$this->load->view($view, $this->data);
$this->load->view('templates/footer', $this->data);
}

}

<强>2。为每个页面创建一个 Controller 并使用 MY_Controller 而不是 CI_Controller

class Homepage extends MY_Controller {
function __construct() {
parent::__construct();
}

function index() {
//define data that the view can access
$this->data['someDataToView'] = 'Some data';
$this->render_page('pages/homepage');
}

}

how can i make the menu controller from database?

好吧,您将没有菜单 Controller ,而是一个 View 。

菜单的可能性

  1. 为菜单创建 View ,在MY_Controller中从数据库中加载记录,在render_page()中加载 View ;
  2. 为菜单创建一个 View ,创建一个 Helper在 MY_Controller 中定义菜单结构和使用的函数,在 render_page() 中加载 View ;

菜单模板示例(根据您的情况进行调整):

./application/views/templates/menu.php

<ul>
<?php foreach($menus as $menu): ?>
<li><a href='<?php print $menu["url"] ?>'><?php print $menu["title"] ?></a></li>
<?php endforeach; ?>
</ul>

编辑

鉴于您的 Home Controller ,我认为错误出在您的 file_exists 检查中。查看我更改的家庭 Controller :

class Home extends MY_Controller {
function __construct() {
parent::__construct();
}

public function view($page = 'home') {
$this->load->helper('text');
//always use $this->data
$this->data['records']= $this->services_model->getAll();
if ( ! file_exists(APPPATH.'views/pages/'.$page.'.php'))
{
//check the content of APPPATH.'views/pages/'.$page.'.php'
// Whoops, we don't have a page for that!
show_404();
}

$this->data['title'] = ucfirst($page); // Capitalize the first letter

//if you use the MY_Controller, check the render_page function...
//$this->load->view('pages/'.$page, $data);
$this->render_page('pages/'.$page)
}
}

关于Codeigniter 动态导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11751624/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com