【问题标题】:yii2 pass data to calendaryii2 将数据传递给日历
【发布时间】:2021-10-07 02:47:02
【问题描述】:

我正在使用 yii2 框架,我想从我的控制器将所有事件传递给日历。主要目标是从控制器获取所有事件并将其显示在日历中。但不幸的是,调试此问题后我无法弄清楚这是我的错误。

这是我的控制器:

public function actionEvents() {
    $data = [];

    $data[] = array(
        'title' => 'Repeating Event',
        'start' =>  '2021-10-07T16:00:00', //strtotime('2021-10-07'),
        'description' => 'Lorem ipsum dolor sit ncididunt ut labore',
        'end' => '2021-10-08T16:00:00', //strtotime('2021-10-08'), 
        'className' => "fc-event-danger"
    );

    $response = Yii::$app->response;
    $response->format = \yii\web\Response::FORMAT_JSON;
    return [
        'data' => $data,
    ];
}

这是我的日历脚本:

var KTCalendarBasic = function() {
    
        return {
            //main function to initiate the module
            init: function() {
    
                var calendarEvents = window.location.href + '/events';
    
                var todayDate = moment().startOf('day');
                var TODAY = todayDate.format('YYYY-MM-DD');
    
                var calendarEl = document.getElementById('kt_calendar');
                var calendar = new FullCalendar.Calendar(calendarEl, {
                    plugins: [ 'interaction', 'dayGrid', 'timeGrid', 'list' ],
    
                    isRTL: KTUtil.isRTL(),
                    header: {
                        left: 'prev,next today',
                        center: 'title',
                        right: 'dayGridMonth,timeGridWeek,timeGridDay'
                    },
    
                    height: 800,
                    contentHeight: 780,
                    aspectRatio: 3,
    
                    nowIndicator: true,
                    now: TODAY + 'T09:25:00', // just for demo
    
                    views: {
                        dayGridMonth: { buttonText: 'month' },
                        timeGridWeek: { buttonText: 'week' },
                        timeGridDay: { buttonText: 'day' }
                    },
    
                    defaultView: 'dayGridMonth',
                    defaultDate: TODAY,
    
                    editable: true,
                    eventLimit: true, // allow "more" link when too many events
                    navLinks: true,
                    events: calendarEvents,
    
                    eventRender: function(info) {
                        var element = $(info.el);
    
                        if (info.event.extendedProps && info.event.extendedProps.description) {
                            if (element.hasClass('fc-day-grid-event')) {
                                element.data('content', info.event.extendedProps.description);
                                element.data('placement', 'top');
                            } else if (element.hasClass('fc-time-grid-event')) {
                                element.find('.fc-title').append('<div class="fc-description">' + info.event.extendedProps.description + '</div>'); 
                            } else if (element.find('.fc-list-item-title').lenght !== 0) {
                                element.find('.fc-list-item-title').append('<div class="fc-description">' + info.event.extendedProps.description + '</div>'); 
                            }
                        } 
                    }
                });
    
                calendar.render();
            }
        };
        }();
    
jQuery(document).ready(function() {
    KTCalendarBasic.init();
});

使用此代码,我仍然无法查看日历中的事件。

【问题讨论】:

    标签: php mysql model-view-controller yii2


    【解决方案1】:

    转换为 JSON 是我犯了一个错误

    现有的:

    $response = Yii::$app->response;
    $response->format = \yii\web\Response::FORMAT_JSON;
    return [
        'data' => $data,
    ];
    

    应该是:

    $response = Yii::$app->response;
    $response->format = \yii\web\Response::FORMAT_JSON;
    return $data;
    

    只返回变量本身而不分配给新变量。因为它会影响我在日历中渲染它的时间。

    【讨论】:

    • 只需return $this-&gt;asJson($data); 将保存您的两行代码。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-02
    相关资源
    最近更新 更多