javascript - Fullcalendar 3 更改周时更改可拖动事件
问题描述
我与 laravel 一起使用 fullcalendar 3。
可拖动的事件是课程,每周应该不同。当我更改日历中的星期时,我想动态更改课程。
目前在控制器中,我有一个功能可以为我提供每门课程:
public function index()
{
$corsi = Corso::select('titolo', 'descrizione','ore_45esimi')->get();
return view('lezione.calendario_lezioni')->with(array('corsi' => $corsi));
}
然后在视图中我使用 div 显示事件:
<div id="external-events">
@foreach($corsi as $corso)
<div class="external-event bg-formazione">{{$corso->titolo }}
<br>
<div style="font-size: small">{{$corso->descrizione }} </div>
<input id="ore" type="hidden" value="{{$corso->ore_45esimi }}">
</div>
@endforeach
</div>
在 Fullcalendar js 文件中,我有一个使课程可拖动的功能:
function ini_events(ele) {
ele.each(function () {
let eventObject = {
title: $(this).contents()
.filter(function () {
return !!$.trim(this.innerHTML || this.data);
})
.first().text(),
descrizione: $.trim($(this).contents()[3].firstChild.textContent),
ore: $(this).contents('#ore').val(),
color: $(this).css("background-color"),
};
$(this).data('event', eventObject);
$(this).draggable({
zIndex: 1070,
revert: true,
revertDuration: 0
});
});
}
ini_events($('#external-events div.external-event'));
我找到了 viewRender 函数,它允许我获取显示的一周的开始和结束:
$('#calendar').fullCalendar({
...
viewRender: function (element) {
var start = moment(element.intervalStart).format();
var end = moment(element.intervalEnd).subtract(1, 'd').format();
},
});
当我第一次显示日历和每次更改星期时,如何在控制器查询中的 index 方法中使用 start 和 end 变量?
解决方案
您希望在 php.ini 中传递两个 javascripts 变量。关于这个问题有大量文献,例如 Laravel Blade pass Javascript variable in php 有很多可能的解决方案。我更喜欢通过 url 将变量的值传递给新方法,然后通过会话传递给 index 方法。1) 路线/web.php
Route::get('yourproject/{start}/{end}/getstartandend','yourController@getstartandend');
2)查看
$('#calendar').fullCalendar({
...
viewRender: function (element) {
var start = moment(element.intervalStart).format();
var end = moment(element.intervalEnd).subtract(1, 'd').format();
},
});
...
appBase="{!!URL::to('/')!!}";
var route = appBase + "/yourproject/"+start+"/"+end+"/getstartandend";
$.get(route);
3) 你的控制器
public function index ()
{
$corsi = Corso::select('titolo', 'descrizione','ore_45esimi')->get();
return view('lezione.calendario_lezioni')->with(array('corsi' => $corsi));
$start = session('start');
$end = session('end');
....
}
public function getstartandend ($start, $end)
{
session(['start' => $start]);
session(['end' => $end]);
}
推荐阅读
- javascript - 使用 select() 复制值并复制
- python - Python-如何检查一个单词是否有小写和大写
- javascript - 使用 jquery/ajax 动态填充下拉列表
- vb6 - VB6 从 Recordset 插入表
- node.js - 来自点击的 AJAX 调用失败
- .htaccess - RewriteRule htaccess 不适用于长参数
- android - 在使用 Espresso 进行测试时,如何登录我的应用程序一次然后执行所有测试套件?目前,每次测试都会重新启动应用程序
- shell - 使用 zsh 时,preexec: parse error in zsh?
- php - 如何在 PHP 中生成带有特定字母的 ID 并添加数字?
- reactjs - 在同一个函数 React 中处理 onClick 和 onKeyPressDown