代码点火器动态菜单创建


codeigniter dynamic menu creation

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

控制器 是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>";
}
                    ?>

现在的错误是,

严重性:通知

消息:未定义的变量:类别

文件名:views/vwHeader.php

线路编号:38

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

我该怎么解决????

$lang中没有值。赋值或传递为空。清空将获取所有数据。(以下代码没有$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
}

因为,您正在获取对象。

在您的代码中,如果您的数据库有记录,则返回对象,否则什么也不返回。

更改

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

return $result

避免行数条件。

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

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

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