GuavaCZ Calendar 使用教程
calendar 项目地址: https://gitcode.com/gh_mirrors/calendar67/calendar
1. 项目介绍
GuavaCZ Calendar 是一个开源项目,它为 Filament PHP 提供了对 vkurko/calendar 的支持。vkurko/calendar 是一个免费且开源的 FullCalendar 替代品,通过 GuavaCZ Calendar,开发者可以轻松地在 Filament PHP 面板中集成日历功能。
2. 项目快速启动
首先,确保您的项目中已经安装了 Composer。然后通过以下命令安装 GuavaCZ Calendar:
composer require guava/calendar
安装完成后,发布包的资产:
php artisan filament:assets
确保您有一个自定义的 Filament 主题,并在您的主题的 tailwind.config.js
文件中的 content
属性中添加以下内容:
content: [
//...
'./vendor/guava/calendar/resources/**/*.blade.php',
],
这样做可以确保 CSS 正确构建。
接下来,创建一个自定义小部件并扩展 CalendarWidget
类。使用 Artisan 命令或手动创建一个空类并扩展 CalendarWidget
:
php artisan make:filament-widget
小部件类应该看起来像这样:
use Guava\Calendar\Widgets\CalendarWidget;
class MyCalendarWidget extends CalendarWidget
{
}
将小部件添加到任何 Filament 页面,例如您的 Dashboard。
3. 应用案例和最佳实践
创建日历小部件
首先,您需要创建一个自定义小部件并扩展 CalendarWidget
类。确保从生成的类中移除 view
属性。
use Guava\Calendar\Widgets\CalendarWidget;
class MyCalendarWidget extends CalendarWidget
{
}
自定义日历视图
默认情况下,显示的是 dayGridMonth
视图。您可以通过在小部件类中覆盖 calendarView
属性来自定义视图:
protected string $calendarView = 'resourceTimeGridWeek';
所有可用的视图都列在日历文档中。
添加事件
默认情况下,日历是空的。要添加事件,请简单地覆盖 getEvents
方法:
use Illuminate\Support\Collection;
use Guava\Calendar(ValueObjects\CalendarEvent;
public function getEvents(array $fetchInfo = []): Collection|array
{
return [
// 链式对象化变体
CalendarEvent::make()
->title('我的第一个事件')
->start(today())
->end(today()),
// 数组变体
[
'title' => '我的第二个事件',
'start' => today()->addDays(3),
'end' => today()->addDays(3),
],
// 实现了 `Eventable` 接口的 Eloquent 模型
MyEvent::find(1),
];
}
创建事件
如示例所示,创建事件有多种方式。至少需要一个包含 title
、start
和 end
属性的数组对象。
CalendarEvent::make()
->title('我的事件')
->start(today())
->end(today()->addDays(3))
->allDay()
->backgroundColor('#ff0000')
->textColor('#ffffff')
->styles([
'color: red' => true,
'background-color' => '#ffff00',
'font-size: 12px',
])
->classNames([
'class-1',
'class-2' => true,
]);
4. 典型生态项目
目前,GuavaCZ Calendar 项目作为 Filament PHP 的一个扩展存在,它依赖于 Filament 和 vkurko/calendar。开发者可以在此基础上构建更多针对特定业务需求的日历相关功能,例如任务调度、资源管理等。通过贡献代码和反馈,社区可以一起努力,使这个项目更加完善和强大。
calendar 项目地址: https://gitcode.com/gh_mirrors/calendar67/calendar
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考