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
相关产品推荐
相关产品推荐

