[英]Passing Array of Dates From Controller to JavaScript in Laravel
我的Laravel视图之一中有一个DatePicker。 我正在尝试从控制器向DatePicker传递日期数组,以使这些日期在页面上处于非活动状态(用户应该无法在这些日期进行预订)。
控制器/ JavaScript的
<?php
function show(Tour $tour) {
$tourdates = DB::table('tourdates')
->join('tours', 'tourdates.tour_id', '=', 'tours.id')
->select('tourdates.tour_date')
->get();
return view('tours.show', compact('tourdates'));
}
?>
<script>
var disableddates = {!! json_encode($tourdates->toArray()) !!};
function DisableSpecificDates(date) {
var string = jQuery.datepicker.formatDate('mm/dd/yy', date);
return [disableddates.indexOf(string) == -1];
}
var dateToday = new Date();
$(function () {
$("#datepicker").datepicker({
numberOfMonths: 1,
showButtonPanel: true,
dateformat: "mm/dd/yy",
minDate: dateToday,
maxDate: "1Y + 1M + 1D",
beforeShowDay: DisableSpecificDates
});
});
</script>
我通过的日期不会失效。 我认为这是因为数组的日期格式是yyyy-mm-dd,而DatePicker中的格式是mm / dd / yy。 但是,我似乎无法修复它。 有什么建议么?
尝试更改传递给formatDate()
的格式以匹配数组中使用的格式
更改:
var string = jQuery.datepicker.formatDate('mm/dd/yy', date);
至
var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
我要解决的问题是我在控制器中而不是在刀刃中格式化了日期,并相应地修改了我的JavaScript。 以下是调整后的代码:
<?php
function show(Tour $tour) {
$tourdates = DB::table('tourdates')
->join('tours', 'tourdates.tour_id', '=', 'tours.id')
->select('tourdates.tour_date')
->get();
foreach ($tourdates as $td) {
$tourdates1[] = date('m/d/Y', strtotime($td->tour_date));
return view('tours.show', compact('tourdates'));
}
?>
<script>
var disableddates = {!! json_encode($tourdates1) !!};
function DisableSpecificDates(date) {
var string = jQuery.datepicker.formatDate('mm/dd/yy', date);
return [disableddates.indexOf(string) == -1];
}
var dateToday = new Date();
$(function () {
$("#datepicker").datepicker({
numberOfMonths: 1,
showButtonPanel: true,
dateformat: "mm/dd/yy",
minDate: dateToday,
maxDate: "1Y + 1M + 1D",
beforeShowDay: DisableSpecificDates
});
});
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.