在CodeIgniter4中集成FullCalendar v3时遇Undefined variable $data错误求助
解决CodeIgniter 4集成FullCalendar时的Undefined variable $data错误
问题原因
你的控制器数据处理逻辑存在结构混乱问题:
- 初始将查询返回的对象数组赋值给
$data,随后在foreach循环中直接给$data添加'data'键,导致$data变成混合了对象数组和关联数组的混乱结构。 - 视图中需要的
$data变量未被正确传递——控制器最终传给视图的$data不是格式化后的事件数组,而是被破坏的混合结构。
修复方案
修改控制器代码,分离查询结果和要传递的事件数据,确保传递给视图的变量名与视图中使用的一致:
public function index() { $db = \Config\Database::connect(); $builder = $db->table('calendar'); $query = $builder->select('*') ->limit(10)->get(); // 单独存储查询结果,避免与最终传递的数组混淆 $results = $query->getResult(); // 初始化空数组存放格式化后的事件数据 $eventData = []; foreach ($results as $key => $value) { $eventData[$key]['title'] = $value->title; $eventData[$key]['start'] = $value->start_date; $eventData[$key]['end'] = $value->end_date; $eventData[$key]['backgroundColor'] = "#00a65a"; } // 以'data'为键,将事件数组传递给视图 return view('calendar', ['data' => $eventData]); }
说明
- 将查询结果单独存放在
$results中,避免覆盖后续要传递的事件数组。 - 新建
$eventData专门存储格式化后的FullCalendar所需事件结构,保证数据格式正确。 - 通过关联数组
['data' => $eventData]传递数据,让视图能直接访问到$data变量,匹配视图中的json_encode($data)调用。
内容的提问来源于stack exchange,提问作者John Raven A. Poro
相关产品推荐
相关产品推荐

