使用Codeigniter从MySql返回的Fullcalendar.js allDay参数

时间:2012-06-13 22:28:33

标签: php mysql json codeigniter fullcalendar

我正在尝试让FullCalendar在我的Codeigniter应用程序上工作,但遇到了从我的JSON提要中全天显示的事件的问题。

我发现设置“allDay”:false修复了问题(使用静态json文件测试)但是当我将该值存储在mysql DB中,然后返回数据并运行JSON编码时,它会转换为False成为一个字符串,导致事件全天显示!

有没有人知道我如何在我的数据库中存储真或假(我目前正在存储为文本)并将其返回到我的json feed而不是字符串?我已经尝试过转换和转换,但无法正常工作!

下面我的模型/控制器/ json提要示例;

提前致谢;

模型功能

function show_installs()
{       
    return $this->db->query(
    "SELECT id, client_name as title, start, end, concat('/planner/view_install/',id) as url
    FROM installs WHERE completed != 2"
    )->result();            
}

控制器功能

function json_installs()
{
    $this->load->model('installs_model');
    $data = array();        
    if($query = $this->installs_model->show_installs())
    {
        $data = $query;
    }
    $json = json_encode($data);
    echo $json;
}   

JSON Feed(因为“周围错误”

而无效)
[
   {
      "id":"18",
      "title":"John",
      "allDay":"false",
      "start":1339585200,
      "end":1339592400,
      "url":"\/planner\/view_install\/18"
   },
   {
      "id":"19",
      "title":"Mike",
      "allDay":"false",
      "start":"1339585200",
      "end":"1339592400",
      "url":"\/planner\/view_install\/19"
   }
]

任何帮助都会非常感激 - 我只需要将这些bloomin引号从false / true中删除,它会完美运行!

由于

1 个答案:

答案 0 :(得分:1)

为什么不将数据库中的列类型更改为布尔值而不是文本?您还可以解析您的$ json对象,将所有booleans_as_text转换为布尔值,然后再将其设置为日历 - 快速谷歌搜索发现我:

for(var i=0; i<$json.length; i++)
  $json[i]=/^true$/i.test($json[i]);

您还可以将allDayDefault设置为false以避免在每个事件中设置allday:false。