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

phpGrid:为虚拟列(非计算字段)添加变量

phpGrid虚拟列生成及500错误排查方案

问题描述

已查阅phpGrid文档并测试多个脚本,无法为虚拟列填充测试内容或静态变量;参考相关方案后执行代码触发500错误且无错误提示,移除代码后页面可正常加载。最终需求是使用自定义$variable生成虚拟列,原代码如下:

$col_formatter = <<<COLFORMATTER
function(cellvalue, options, rowObject){    
    return "ABC";
}
COLFORMATTER;

$dg -> add_column(
        'XYZ', 
        array('name'=>'XYZ', 
            'index'=>'XYZ', 
            'width'=>'360', 
            'align'=>'left', 
            'sortable'=>false,
            'formatter'=>$col_formatter),
        'XYZ');

错误排查与解决步骤

1. 开启PHP错误显示定位500原因

首先在脚本开头添加错误输出代码,获取具体错误信息:

error_reporting(E_ALL);
ini_set('display_errors', 1);

常见触发500的原因包括:

  • Heredoc结束符COLFORMATTER;未顶格书写(前后不能有空格、缩进)
  • add_column参数不符合phpGrid规范

2. 修正虚拟列代码写法

phpGrid的add_column方法中,第三个参数为数据源关联字段,虚拟列无需关联,可设为空;同时确保Heredoc语法正确,传递自定义变量到JS formatter需用json_encode转义避免语法错误:

// 自定义PHP变量
$variable = "自定义内容";
// 转义变量适配JS语法
$variable_json = json_encode($variable);

// 修正后的formatter,嵌入转义后的变量
$col_formatter = <<<COLFORMATTER
function(cellvalue, options, rowObject){    
    return {$variable_json};
}
COLFORMATTER;

// 调用add_column,第三个参数留空
$dg->add_column(
    'XYZ', 
    array(
        'name' => 'XYZ', 
        'index' => 'XYZ', 
        'width' => '360', 
        'align' => 'left', 
        'sortable' => false,
        'formatter' => $col_formatter
    ),
    '' // 虚拟列无需关联数据源字段,设为空
);

3. 简化方案:直接定义静态内容formatter

如果仅需生成固定内容的虚拟列,可简化写法,无需Heredoc:

$variable = "自定义内容";
$col_formatter = "function(){return '{$variable}';}";

$dg->add_column(
    'XYZ', 
    array(
        'name' => 'XYZ', 
        'index' => 'XYZ', 
        'width' => '360', 
        'align' => 'left', 
        'sortable' => false,
        'formatter' => $col_formatter
    ),
    ''
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 01:01:13