繁体   English   中英

在Laravel中将日期数组从控制器传递到JavaScript

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM