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

CodeIgniter 3.0中Flexigrid加载数据库数据报错求助

解决Flexigrid构造函数过时错误及数据加载问题

首先,那个构造函数过时的错误是PHP版本兼容导致的,咱们先搞定它,再一步步修复数据加载的问题。

一、处理构造函数过时警告/错误

PHP 7.0之后就不再支持「和类名同名的方法作为构造函数」了,你用的Flexigrid库还在沿用旧写法。修改起来很简单:

  1. 找到项目里的application/libraries/Flexigrid.php文件
  2. 找到里面的旧构造函数:
function Flexigrid() {
    // 原来的构造函数代码
}
  1. 把它改成PHP标准的构造函数写法:
public function __construct() {
    // 原来的代码保留不动
}

改完之后这个过时提示就会消失了。

二、修复代码里的其他问题(让数据正常加载)

1. 模型方法的参数和CI实例问题

你的模型GetData方法定义了$username, $password两个参数,但控制器调用的时候根本没传,这肯定会报错。如果这俩参数没用,直接删掉:

public function GetData(){
    // 原代码内容
}

另外,模型里用$this->CI->flexigrid之前,得先初始化CI实例,在模型的构造函数里加这段:

private $CI;
public function __construct() {
    parent::__construct();
    $this->CI =& get_instance();
}

不然会找不到flexigrid对象。

2. 列数不匹配导致的渲染异常

你在lists里定义的colModel有6列,但load_data里的record_items却塞了7个元素,Flexigrid对列数要求严格,必须一一对应。

要么调整colModel的列数,要么修改record_items的元素数量。比如把colModel改成和record_items对应的7列:

$colModel['id_pengguna'] = array('ID',60,TRUE,'left',2);
$colModel['nama_pengguna'] = array('NAMA PENGGUNA',100,TRUE,'left',2);
$colModel['nik'] = array('NIK',100,TRUE,'left',2);
$colModel['nama'] = array('NAMA',150,TRUE,'left',2);
$colModel['no_telepon'] = array('NO TELEPON',150,TRUE,'left',2);
$colModel['role'] = array('ROLE',150,TRUE,'left',2);
$colModel['aksi'] = array('AKSI',60,FALSE,'center',2);

3. 确保JSON响应头配置正确

检查项目的config.php里有没有json_header配置,如果没有就加上:

$config['json_header'] = 'Content-Type: application/json';

不然返回的JSON数据格式不对,Flexigrid解析不了。

三、最后测试

按上面的步骤改完之后,清一下浏览器缓存,重新访问页面,应该就能正常加载数据到Flexigrid里了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:26:06