You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Codeigniter3中CI_GridView类未找到错误求助

问题:CodeIgniter 3自定义GridView库调用报错Class 'CI_GridView' not found

我正在使用CodeIgniter 3,已将自定义GridView类文件放置在Library目录,其代码如下:

<?php 
(defined('BASEPATH')) OR exit('No direct script access allowed'); 

class GridView{ 
    private $data; 
    private $headers; 
    private $is_sortable; 
    private $sort_columns; 
    private $current_sort; 
    private $show_checkbox; 
    private $per_page; 
    private $total_items; 
    private $current_page; 
    private $column_count; 
    private $pagination_dots_threshold; 
    private $search_url; 
    private $deleteOption; 
    private $formAction; 
    private $formID; 

    function __construct(){} 

    public function init($config=array()){ 
        $default=array( 
            "id"=>"companies", 
            "css_table_classes"=>"table table-bordered table-striped table-hover", 
            "data"=>array(), 
            "headers"=>array(), 
            "is_sortable"=>true, 
            "sort_columns"=>array(), 
            "current_sort"=>"", 
            "show_checkbox"=>true, 
            "per_page"=>20, 
            "total_items"=>42, 
            "current_page"=>1, 
            "pagination_dots_threshold"=>20, 
            "search_url"=>false, 
            "deleteOption"=>true, 
            "formAction"=>"", 
            "formID"=>"" 
        ); 
        $final= $config + $default; 
        foreach($final as $k=>$v){ 
            $this->{$k}=$v; 
        } 

        $positive = $negative = $this->negative_sort_columns=array(); 
        if(is_array($this->sort_columns) && count($this->sort_columns) > 0){ 
            foreach ($this->sort_columns as $col) { 
                if(stripos($col,'!')!==false){ 
                    $negative[]=str_replace("!","",$col); 
                }else{ 
                    $positive[]=$col; 
                } 
            } 
            $this->sort_columns=$positive; 
            $this->negative_sort_columns=$negative; 
        } 
    } 
}

我在控制器中通过以下代码调用该类:

$grid=load_class("GridView", $directory = 'libraries', $prefix = '');

但出现错误提示:

Class 'CI_GridView' not found in C:\xampp\htdocs\mgt\Master_Panel\system\core\Common.php on line 195


解决方案

这个问题是因为你用错了CodeIgniter的库加载方式,load_class()是框架内部用来加载核心系统类的方法,它默认会自动给类名加上CI_前缀,所以才会找不到你的GridView类。下面是两种解决办法:

方法一:用框架推荐的方式加载自定义库(首选)

CodeIgniter专门提供了$this->load->library()方法来加载自定义库,这是最符合框架规范的做法:

  1. 确保你的库文件名和类名一致:文件名为GridView.php(首字母大写),放在application/libraries目录下。
  2. 在控制器里这样调用:
    // 加载GridView库
    $this->load->library('GridView');
    
    // 准备配置参数(根据你的需求调整)
    $grid_config = array(
        'total_items' => 100,
        'current_page' => $this->input->get('page', TRUE) ?: 1,
        // 其他你需要的配置项
    );
    
    // 初始化GridView
    $this->gridview->init($grid_config);
    

方法二:修改类名适配load_class()(不推荐)

如果你一定要用load_class(),需要调整你的类名和调用方式:

  1. 把类名改成CI_GridView,文件名也改成CI_GridView.php:
    class CI_GridView {
        // 原有的类代码不变
    }
    
  2. 然后在控制器里调用:
    $grid = load_class("GridView", 'libraries');
    // 或者保留原类名,调用时明确指定前缀为空:
    // $grid = load_class("GridView", 'libraries', '');
    
    不过这种方式并不建议,因为load_class()是为系统核心类设计的,自定义库用官方推荐的加载方式更稳妥。

额外检查项

  • 确认application/libraries目录的权限没问题,Web服务器能读取里面的文件;
  • 类文件要保存为UTF-8无BOM格式,避免出现解析错误;
  • 如果你的GridView依赖其他类,记得提前加载那些依赖。

内容的提问来源于stack exchange,提问作者surma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:02:06