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

时间:2019-01-20 15:44:39

标签: javascript laravel date datepicker

我的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。但是,我似乎无法修复它。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

尝试更改传递给AuthenticationResult result = application.AcquireTokenOnBehalfOfAsync(scopes.Except(_scopesRequestedByMsalNet), userAssertion).GetAwaiter().GetResult(); 的格式以匹配数组中使用的格式

更改:

formatDate()

收件人

var string = jQuery.datepicker.formatDate('mm/dd/yy', date);

答案 1 :(得分:0)

我要解决的问题是我在控制器中而不是在刀刃中格式化了日期,并相应地修改了我的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>