嗨,我正在尝试使用fullcalendar的拖放外部事件,并开始使用yii扩展fullcalender,它似乎只是一个包装器。
不起作用的部分(没有错误就是不起作用)正在将外部事件拖到日历上并保持不变。它拖了过去,但它刚刚回家。
阅读完整的日历文档-看起来我需要为"drop"属性提供一个回调函数。我一直在使用外部事件示例,它是完整日历的一部分。我确实发现这个例子使用了对象名称"#calendar",yii正在创建名称"#yw0",但在我更新后它仍然不起作用。
我找不到让它工作的方法。我尝试了一个简单的警报,它在页面加载时调用,而不是在拖动操作后调用。
所以我用View中的函数声明了一个变量
//$dropcallback=new CJavaScriptExpression("alert('hi')");
$dropcallback=new CJavaScriptExpression(
"function(date, allDay) {
var originalEventObject = $(this).data('eventObject');
var copiedEventObject = $.extend({}, originalEventObject);
copiedEventObject.start = date;
copiedEventObject.allDay = allDay;
$('#yw0').fullCalendar('renderEvent', copiedEventObject, true);
if ($('#drop-remove').is(':checked')) {
// if so, remove the element from the Draggable Events list
$(this).remove();
}
}
");
然后我创建像这样的widgit
$this->widget('ext.EFullCalendar.EFullCalendar', array(
'themeCssFile'=>'cupertino/jquery-ui.min.css',
'options'=>array(
'header'=>array(
'left'=>'prev,next',
'center'=>'title',
'right'=>'today'
),
'editable'=>true,
'dropable'=>true,
'drop'=>$dropcallback,
'events'=>Game::model()->gameCalendarData(),
)));
我对JS的yii经验很少,所以很感激在如何实现这一点方面提供的任何帮助。
我知道,在JS中,您需要提供一个回调来允许拖动操作成功。但是,当它被包裹在yii widgit中时,我需要什么样的回拨?我尝试了一个PHP回调,但它只在页面加载时调用。
我希望的结果是,我可以从数据库中构建外部事件列表——允许用户将它们拖到日历上——并将它们保存在数据库中。
我确实设法从日历中显示的数据库中获取了数据。
感谢
Droppable用两个p拼写。所以
'dropable'=>true,
应该是
'droppable'=>true,