totstoychev/calendar-events

Laravel 的完整日历事件模块

1.0.0 2017-11-03 17:59 UTC

This package is not auto-updated.

Last update: 2024-09-22 07:48:13 UTC


README

Build Status

Laravel 5 模块,用于集成 fullcalendar JavaScript 插件。它提供了一种简单的方法将事件存储到数据库中,并支持事件重复。

安装

使用标准方式 composer require todstoychev/calendar-events

在您的 Laravel config/app.php 中注册服务提供者。您应该添加 Todstoychev\CalendarEvents\CalendarEventsServiceProvider::class

运行 php artisan vendor:publish 以发布配置和其他资源。

此模块还提供 3 个迁移文件。运行它们将需要运行 php artisan migrate

用法

表单

此模块附带一个可供使用的表单模板。该表单可以用作编辑和添加表单。在您的 blade 中使用 @include('calendar-events::form') 来将其包含到您的页面中。您也可以自由地覆盖和扩展此模板。

要使用此表单并在您的页面中添加,您需要一个来自模块提供的 JavaScript 文件。在运行 vendor publish 命令后,您应该能够在 public/js/calendar-events.js 中找到它。此脚本对于控制提供的表单是必要的。它包含了一些方法和简单 JS 对象。

控制器

由于此模块在容器中有服务提供者,您可以在控制器中像这样访问 CalendarEventsService::class

protected $calendarEventsService;

    public function __construct(CalendarEventsService $calendarEventsService)
    {
        $this->calendarEventsService = $calendarEventsService;
    }

这是主要模块类,它包含与事件交互所需的所有必要方法。

模块提供了一个请求类,可用于验证您的输入数据。以下是如何创建新事件的示例用法。

<?php

namespace App\Http\Controllers;

use Todstoychev\CalendarEvents\Http\Requests\CalendarEventRequest;
use Todstoychev\CalendarEvents\Services\CalendarEventsService;

class IndexController extends Controller
{
    protected $calendarEventsService;

    public function __construct(CalendarEventsService $calendarEventsService)
    {
        $this->calendarEventsService = $calendarEventsService;
    }

    public function postAdd(CalendarEventRequest $request)
    {
        $this->calendarEventsService->createCalendarEvent($request->input());
    }
}

服务类具有提供完整 CRUD 的方法。要更新事件,可以使用 CalendarEventsService::updateCalendarEvent()。要获取单个事件,请使用 CalendarEventsService::getCalendarEvent()。使用 CalendarEventsService::getAllEvents() 将获取所有日历事件。《CalendarEventsService::getAllEventsToJson() 可能是重要的方法。此方法应与 JavaScript 插件一起使用。该方法提供了必要的 JSON 字符串。以下使用示例。在您的控制器中创建一个像这样的方法

     public function getJson()
     {
         echo $this->calendarEventsService->getAllEventsAsJson();
     }

此方法应与 fullcalendar 一起使用

<div id="calendar"></div>
<script src="{{ asset('jquery.js') }}"></script>
<script src="{{ asset('js/calendar-events.js') }}"></script> <!-- This is where the CalendarEvents object comes from. -->
<script src="{{ asset('fullcalendar/lib/moment.min.js') }}"></script>
<script src="{{ asset('fullcalendar/fullcalendar.min.js') }}"></script>
<script>
    $(document).ready(function () {
        CalendarEvents.init();
        $('#calendar').fullCalendar({
            eventSources: [
                {
                    url: 'http://example.com/json'
                }
            ]
        });
    });
</script>

不要忘记,您需要在项目中包含 fullcalendar 插件。

待办事项

  • 添加更多 PHPUnit 测试以实现最大覆盖率。
  • 创建适用于 Bootstrap 3 的表单模板。
  • 添加功能以按周、月和年重复事件。
  • 添加功能以选择事件将重复的星期几。
  • 添加功能以在指定天数后重复事件。
  • 添加功能以在特定次数后重复事件。