使用 codeigniter 显示两次完整日历事件
Fullcalendar events displayed twice using codeigniter
我已经将 fullcalendar 与 codeigniter 框架集成在一起。从我的 MySQL 数据库中提取事件工作正常,使用 eventDrop 重新安排事件也是如此。我的问题是所有事件都在我的日历中显示两次。此外,日历中的日期会移动以匹配事件第一个实例的持续时间。我怎样才能摆脱第二个显示器?我怀疑它与 css 或 codeigniter 框架有关,但我无法确定位置或方式。
我已经排除了与数据库相关的问题。即使我像下面示例中那样将事件添加为数组,我也会看到这个问题。
问题描述:
一个空日历正确显示,每个日期都在右上角对齐。如果我添加一个类似下面代码中的事件,我会看到两个事件。第一个在定义的日期正确显示,但在我看到同一事件的第二个实例之后立即显示。此外,网格日期现在向左移动,不再与 table 网格对齐。例如,如果我将事件延长到持续整整一周(如下面的代码所示),星期日日期将显示在 table 网格的中心,然后是事件的第二个实例。
如果我重新安排,我需要 select 第一个事件,但第二个事件移动。
我在重新安排时看到此错误消息:
未捕获的类型错误:无法设置未定义的 属性 'el' fullcalendar.js:3338
我无法让 eventResize 起作用。
代码点火器set-up
我已将完整日历文件放在 asset/fullcalendar 文件夹中,并使用如下辅助函数添加它们:
function asset_url(){
return base_url().'assets/';
}
/* End of file utility_helper.php */
/* Location: ./application/helpers/utility_helper.php */
这是我的 header 观点:
<?php echo doctype("html5"); ?>
<head>
<?php echo meta('Content-type', 'application/json; charset=utf-8', 'equiv');?>
<!-- Full calendar stylesheets -->
<?php echo link_tag('assets/fullcalendar/fullcalendar.css'); ?>
<?php echo link_tag('assets/fullcalendar/fullcalendar.print.css','stylesheet','text/css','','print'); ?>
<!-- fullcalendar js-files -->
<script src='<?php echo asset_url();?>fullcalendar/lib/jquery.min.js'></script>
<script src='<?php echo asset_url();?>fullcalendar/lib/moment.min.js'></script>
<script src='<?php echo asset_url();?>fullcalendar/fullcalendar.js'></script>
<script type="text/javascript">
$(document).ready(function() {
$('#calendar').fullCalendar({
allDayDefault: false,
editable : true,
resizeable : true,
events: [
{
title : 'event1',
start : '2015-03-01',
end : '2015-03-08'
},
],
});
});
</script>
</head>
这是我的 body 观点:
<div id="calendar"></div>
编辑:
填充日历 from/to db
从 MySQL 填充日历时,我将 header 中的 "events:" 替换为以下代码:
events: "<?php echo site_url().'/project/show_events';?>",
控制器功能
function show_events() {
//populate the calendar from db
$this->load->model('calendar');
$data['json'] = $this->calendar->getCalendar();
$this->load->view('calendar', $data);
}
型号calendar.php
<?php
Class Calendar extends CI_Model
{
function __construct()
{
parent::__construct();
}
function getCalendar()
{
$sql = "SELECT PROJ_PRODUCTIONORDER.id as id, CONCAT(PROJ_PRODUCTIONORDER.ordernumber, ' ', PROJ_CLIENTLIST.clientname) as title, PROJ_PRODUCTIONORDER.start as start, PROJ_PRODUCTIONORDER.end as endd
FROM PROJ_PRODUCTIONORDER, PROJ_CLIENTLIST
WHERE PROJ_PRODUCTIONORDER.clientid=PROJ_CLIENTLIST.id
ORDER BY PROJ_PRODUCTIONORDER.id";
$result = $this->db->query($sql);
return $result;
}
查看calendar.php
<?php
$jsonevents = array();
foreach($json->result() as $entry)
{
$jsonevents[] = array(
'id' => $entry->id,
'title' => $entry->title,
'start' => $entry->start,
'end' => $entry->endd,
'allDay' => '',
);
}
echo json_encode($jsonevents);
calendar.php 回显以下事件数组:
[{"id":"1","title":"ordernumber1 clientname1","start":"2015-03-01","end":"2015-03-08","allDay":""},{"id":"2","title":"ordernumber2 clientname2","start":"2015-04-01","end":"2014-04-03","allDay":""}]
非常感谢有关此问题的任何帮助。
已解决。我发现日历 table 在 en 事件之后产生了一些额外的东西,这就是为什么所有事件都向左移动的原因。无论如何,我将日历移到了它自己的控制器中,现在它就像一个魅力。
我已经将 fullcalendar 与 codeigniter 框架集成在一起。从我的 MySQL 数据库中提取事件工作正常,使用 eventDrop 重新安排事件也是如此。我的问题是所有事件都在我的日历中显示两次。此外,日历中的日期会移动以匹配事件第一个实例的持续时间。我怎样才能摆脱第二个显示器?我怀疑它与 css 或 codeigniter 框架有关,但我无法确定位置或方式。
我已经排除了与数据库相关的问题。即使我像下面示例中那样将事件添加为数组,我也会看到这个问题。
问题描述: 一个空日历正确显示,每个日期都在右上角对齐。如果我添加一个类似下面代码中的事件,我会看到两个事件。第一个在定义的日期正确显示,但在我看到同一事件的第二个实例之后立即显示。此外,网格日期现在向左移动,不再与 table 网格对齐。例如,如果我将事件延长到持续整整一周(如下面的代码所示),星期日日期将显示在 table 网格的中心,然后是事件的第二个实例。
如果我重新安排,我需要 select 第一个事件,但第二个事件移动。
我在重新安排时看到此错误消息: 未捕获的类型错误:无法设置未定义的 属性 'el' fullcalendar.js:3338
我无法让 eventResize 起作用。
代码点火器set-up 我已将完整日历文件放在 asset/fullcalendar 文件夹中,并使用如下辅助函数添加它们:
function asset_url(){
return base_url().'assets/';
}
/* End of file utility_helper.php */
/* Location: ./application/helpers/utility_helper.php */
这是我的 header 观点:
<?php echo doctype("html5"); ?>
<head>
<?php echo meta('Content-type', 'application/json; charset=utf-8', 'equiv');?>
<!-- Full calendar stylesheets -->
<?php echo link_tag('assets/fullcalendar/fullcalendar.css'); ?>
<?php echo link_tag('assets/fullcalendar/fullcalendar.print.css','stylesheet','text/css','','print'); ?>
<!-- fullcalendar js-files -->
<script src='<?php echo asset_url();?>fullcalendar/lib/jquery.min.js'></script>
<script src='<?php echo asset_url();?>fullcalendar/lib/moment.min.js'></script>
<script src='<?php echo asset_url();?>fullcalendar/fullcalendar.js'></script>
<script type="text/javascript">
$(document).ready(function() {
$('#calendar').fullCalendar({
allDayDefault: false,
editable : true,
resizeable : true,
events: [
{
title : 'event1',
start : '2015-03-01',
end : '2015-03-08'
},
],
});
});
</script>
</head>
这是我的 body 观点:
<div id="calendar"></div>
编辑:
填充日历 from/to db
从 MySQL 填充日历时,我将 header 中的 "events:" 替换为以下代码:
events: "<?php echo site_url().'/project/show_events';?>",
控制器功能
function show_events() {
//populate the calendar from db
$this->load->model('calendar');
$data['json'] = $this->calendar->getCalendar();
$this->load->view('calendar', $data);
}
型号calendar.php
<?php
Class Calendar extends CI_Model
{
function __construct()
{
parent::__construct();
}
function getCalendar()
{
$sql = "SELECT PROJ_PRODUCTIONORDER.id as id, CONCAT(PROJ_PRODUCTIONORDER.ordernumber, ' ', PROJ_CLIENTLIST.clientname) as title, PROJ_PRODUCTIONORDER.start as start, PROJ_PRODUCTIONORDER.end as endd
FROM PROJ_PRODUCTIONORDER, PROJ_CLIENTLIST
WHERE PROJ_PRODUCTIONORDER.clientid=PROJ_CLIENTLIST.id
ORDER BY PROJ_PRODUCTIONORDER.id";
$result = $this->db->query($sql);
return $result;
}
查看calendar.php
<?php
$jsonevents = array();
foreach($json->result() as $entry)
{
$jsonevents[] = array(
'id' => $entry->id,
'title' => $entry->title,
'start' => $entry->start,
'end' => $entry->endd,
'allDay' => '',
);
}
echo json_encode($jsonevents);
calendar.php 回显以下事件数组:
[{"id":"1","title":"ordernumber1 clientname1","start":"2015-03-01","end":"2015-03-08","allDay":""},{"id":"2","title":"ordernumber2 clientname2","start":"2015-04-01","end":"2014-04-03","allDay":""}]
非常感谢有关此问题的任何帮助。
已解决。我发现日历 table 在 en 事件之后产生了一些额外的东西,这就是为什么所有事件都向左移动的原因。无论如何,我将日历移到了它自己的控制器中,现在它就像一个魅力。