【问题标题】:Highlight date if it has an event using fullCalendar如果有使用 fullCalendar 的事件,则突出显示日期
【发布时间】:2019-08-14 18:28:32
【问题描述】:

我正在尝试获取我的数据库中的所有事件并突出显示在我的 UI 中有事件的日期。目前,我只能使用静态数据来完成它,并且在我的测试代码中,它显示我想要的事件名称只是突出显示日期而不显示事件名称,我该如何获取它?

 $('#calendars').fullCalendar({

height: 395,

header: {
  // title, prev, next, prevYear, nextYear, today
  left: 'prev',
  center: 'title',
  right: 'next'
},
events: [
  {
      title  : 'event1',
      start  : '2019-03-01'
  },
  {
      title  : 'event2',
      start  : '2019-03-05',
  },
  {
      title  : 'event3',
      start  : '2019-03-15'
  },
  {
    title  : 'event5',
    start  : '2019-05-15'
  }

],
eventRender: function (event, element, view) {
    // like that
    var dateString = moment(event.start).format('YYYY-MM-DD');
    $('#calendar').find('.fc-day-number[data-date="' + dateString + '"]').css('background-color', '#FAA732');
},
});

这个结果是这样的:

我打算像这样使用ajax:

events: [
    $.ajax({
         type: 'GET',
         url: '/events',
         success: function(events){
             //return the result as  the events data.
         }

    });
],

但我不知道如何实现它。这是我的事件控制器;

 public function allEvents(){
    $events = Events::whereNotNull('event_date')->get();

    return $events;
}

我怎样才能实现我的目标?

【问题讨论】:

    标签: javascript php laravel-5 fullcalendar


    【解决方案1】:

    你可以试试这样的:

    events: function(start, end, timezone, callback) {
       $.ajax({
             url: "http://yourwebsite.com/events", // complete URL here.. you need to change it
             dataType: "json",
             type: 'GET',
             success: function(data){
               callback(data);
             },
             error: function(error){
              console.log("Error:");
              console.log(error);
             }
        })
    }
    

    并更改控制器代码以返回 JSON

    public function allEvents(){
        $events = Events::whereNotNull('event_date')->get();
        // make sure events data has title and start values returned from the database.
        return response()->json($events); 
    }
    

    【讨论】:

    • 事件标题栏应该是title以及开始吗?现在我有name 作为事件标题,开始是event_date(日期时间数据类型)。
    • 我把url改成url: '/events',,结果是Error: calendar.js:33 {readyState: 4, getResponseHeader: ƒ, getAllResponseHeaders: ƒ, setRequestHeader: ƒ, overrideMimeType: ƒ, …}
    • 你需要在那里使用一个完整的 URL.. 一个公共 URL。
    • 我试着做 url: 'localhost/events' but it returns GET localhost/localhost/events 404 (Not Found)`。因为现在我正在本地开发。
    • 尝试http://localhost/events,如果这会为您提供事件数据作为回报。或者在浏览器窗口中打开事件页面,您可以在其中看到返回的事件 JSON 数据并在 AJAX 请求中复制该 URL。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-04
    • 2014-04-15
    • 2016-06-10
    相关资源
    最近更新 更多