totstoychev / calendar-events
Laravel 的完整日历事件模块
Requires
- php: >=5.5.9
- laravel/framework: >=5.1
- nesbot/carbon: ^1.22
- todstoychev/websafe-colors: ^0.1.1
Requires (Dev)
- phpunit/phpunit: ^6.4
This package is not auto-updated.
Last update: 2024-09-22 07:48:13 UTC
README
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 的表单模板。
- 添加功能以按周、月和年重复事件。
- 添加功能以选择事件将重复的星期几。
- 添加功能以在指定天数后重复事件。
- 添加功能以在特定次数后重复事件。