【问题标题】:database driven codeigniter navbar数据库驱动的codeigniter导航栏
【发布时间】:2014-07-12 13:27:12
【问题描述】:

我是 CodeIgniter 的新手,有人告诉我这是要走的路。

我已经阅读了几次用户手册,但似乎不明白我想做一个从数据库驱动的导航栏的事情。我在这里发现了一些帖子,说的是我已经实现的一种方法,但无论我做什么,它似乎都对我不起作用。到目前为止我做了什么:

创建了一个表:

CREATE TABLE IF NOT EXISTS `app_routes` (
  `id` bigint(20) NOT NULL auto_increment,
  `slug` varchar(192) collate utf8_unicode_ci NOT NULL,
  `controller` varchar(64) collate utf8_unicode_ci NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `slug` (`slug`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1;

添加到route.php文件

$route[ 'default_controller' ]  = 'home';
$route[ '404_override' ]        = 'error404';

require_once( BASEPATH .'database/DB'. EXT );
$db =& DB();
$query = $db->get( 'app_routes' );
$result = $query->result();
foreach( $result as $row )
{
    $route[ $row->slug ]                 = $row->controller;
    $route[ $row->slug.'/:any' ]         = $row->controller;
    $route[ $row->controller ]           = 'error404';
    $route[ $row->controller.'/:any' ]   = 'error404';
}

设置控制器:

<?php
class Home extends CI_Controller {

    public function index()
    {
        $this->load->view('smooth/header.php');
    $this->load->view('smooth/navbar.php');
        $this->load->view('smooth/index.php');
        $this->load->view('smooth/footer.php');

        }
}
?>

在我在控制器home 和页面contact 下的数据库中

当我通过我的域名访问我的网站时,我只看到首页,但如果我将 index.php/home 添加到它,我什么也得不到,或者 index.php/home/contact 什么也没有

我的index.php 文件的路径位于我的domain/application/views/themes/smooth/index.php

任何人都可以帮助我解决我缺少的问题或问题所在吗?

【问题讨论】:

  • 当 EllisLabs 不再积极维护 CodeIgniter 并且似乎没有其他人愿意接管它时,任何人将 CodeIgniter 描述为“必经之路”似乎有点奇怪。
  • 另外,你真的需要展示你的视图文件,因为很可能问题就在那里。
  • @MatthewDaly,我质疑 codeigniter 没有被激活,据说那里的库可以节省大量时间并且有利于安全。
  • 在 view/themes/smooth/index.php 我只写了索引页面,在 view/themes/smooth/contact.php 我有联系页面。我试图通过转到 mydomain/index.php/home/ 和 mydomain/index.php/home/contact 给他们打电话,但没有工作
  • 与使用普通的旧 PHP 相比,任何框架都会为您节省大量的开发时间。由于不再积极维护 CodeIgniter,因此如果在其中发现漏洞,则可能不会对其进行修补。周围有很多现代的、积极维护的 PHP 框架。

标签: php css codeigniter twitter-bootstrap


【解决方案1】:

您没有将路线传递给视图。

没有看到有问题的视图,我无法判断那里是否存在问题,但您需要像这样传递数据:

$this->load->model('yourmodel');
$routes = $this->yourmodel->getRoutes();
$data = array(
    'routes' => $routes
);  
$this->load->view('smooth/header.php');

数据库查询进入一个模型,因此您需要定义它,以及一个返回数据的方法——这里我将该模型表示为yourmodel,将调用的方法表示为getRoutes。在任何情况下,您都不应该将您的数据库查询放在routes.php

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多