codeigniter动态菜单创建

时间:2015-07-27 06:45:11

标签: php codeigniter

我正在尝试使用数据库创建动态菜单。

控制器 是menu.php

  <?php
  $_SESSION['lang'] = 'EN';

class Menu extends CI_Controller {
function __construct(){
    parent::__construct();
    $this->load->database();
    $this->load->model("menu_model");
}

public function index()
{
    $data['category']= $this->menu_model->getCategory('$lang');
    $data['subcategory']= $this->menu_model->getSubCategory('$lang');

    $this->load->view('vwHeader',$data);//Left Menu
}
}
?>

模型 是menu_model.php

<?php
 class Menu_model extends CI_Model{
function __construct(){
    parent::__construct();
    $this->load->database();
}

function getCategory($lang){
    $sql = 'SELECT * FROM category';
    $result = $this->db->query($sql);
    if($result->num_rows() > 0)
    {

    return $result;
    }


}

function getSubCategory($lang){
    $sql = 'SELECT * FROM subcategory';
    $result = $this->db->query($sql);
   if($result->num_rows() > 0)
    {
   return $result;
    }

}

}
?>

查看 是vwHeader.php

<?php


           foreach($category->result() as $menu)
{
echo "<ul style='margin-left: 148px;margin-top: 15px;'>";
   echo "<li style='float: left;


height: 57px;
text-decoration: none;
display: block;'><a class=\"sf-with-ul\" href=\"category/".$menu->urlcategory."\">".$menu->namecategory."</a>";
   /*check whether sub menu is there if so first print <ul> then <li><a>*/
   if(count($subcategory->result()) > 0 && is_array($subcategory->result()))
   {
         echo "<ul class=\"sub-menu\">";
        foreach($subcategory->result() as $key=>$submenu)
        {
          if ($menu->idcategory == $submenu->idcategory){
           echo "<li><a href=\"category/".$submenu->urlsubcategory."\">".$submenu->namesubcategory."</a></li>";
            }
         }



    }
    else
        {
        echo "<ul style='display:none'>";
        echo "</ul>";
        } 
        echo "</ul>";
    echo "</li>";
     echo "</ul>";
}

                    ?>

现在错误是,

  

严重性:注意

     

消息:未定义的变量:category

     

文件名:views / vwHeader.php

     

行号:38

     

致命错误:在第38行的C:\ xampp \ htdocs \ admin \ application \ views \ vwHeader.php中的非对象上调用成员函数result()

我该如何解决????

3 个答案:

答案 0 :(得分:0)

$lang没有价值。分配值或传递为空.Empty将获取所有数据。(以下代码没有$lang

在模型中

function getCategory()
{
    $query = $this->db->query("SELECT * FROM category");
    $result = $query->result_array();
    $count = count($result);
    if(!empty($count))
    {
        return $result;
    }
}

function getSubCategory()
{
    $query = $this->db->query("SELECT * FROM subcategory");
    $result = $query->result_array();
    $count = count($result);
    if(!empty($count))
    {
        return $result;
    }

}

在控制器中

$data['category']= $this->menu_model->getCategory();
$data['subcategory']= $this->menu_model->getSubCategory();

在视图中

foreach ( $category as $new_category )
{
    echo '<a href="">'. $new_category;.'<a>';//your rest of code
}

答案 1 :(得分:0)

因为,你正在取物。

在您的代码中,如果您的数据库有记录,则返回对象,否则不会返回任何内容。

更改

if($result->num_rows() > 0)
    {
    return $result;
    }

return $result

避免行数条件。

答案 2 :(得分:0)

首先,您需要更正代码中的某些行: -

  1. return $result;使用此return $result->result()

  2. 使用foreach($category as $menu)代替foreach($category->result() as $menu)foreach($subcategory as $menu)代替foreach($subcategory->result())