funayaki / cakephp-calendar
CakePHP 插件,用于轻松创建日历。
0.2
2018-04-01 11:24 UTC
Requires
- php: >=5.6
- cakephp/cakephp: ^3.5
Requires (Dev)
- cakephp/chronos: ^1.0.1
- fig-r/psr2r-sniffer: dev-master
This package is not auto-updated.
Last update: 2024-09-19 10:50:23 UTC
README
用于渲染简单日历的插件。
此分支适用于 CakePHP 3.5 及以上版本。
特性
- 简单且健壮
- 无需 JS,比 fullcalendar 等解决方案更具响应性
- 持久的
年/月
URL 部分(可复制粘贴,链接/重定向友好)
演示
在沙盒中查看演示 日历示例。
安装
composer require dereuromark/cakephp-calendar
然后确保插件在 bootstrap 中加载
bin/cake plugin load Calendar
您也可以手动将其放入
Plugin::load('Calendar');
用法
在您的控制器中加载组件
$this->loadComponent('Calendar.Calendar');
并在 View 类的 helper 中也加载
$this->loadHelper('Calendar.Calendar');
您的操作
/** * @param string|null $year * @param string|null $month * @return void */ public function calendar($year = null, $month = null) { $this->Calendar->init($year, $month); // Fetch calendar items (like events, birthdays, ...) $options = [ 'year' => $this->Calendar->year(), 'month' => $this->Calendar->month(), ]; $events = $this->Events->find('calendar', $options); $this->set(compact('events')); }
在您的 index 模板中
<?php foreach ($events as $event) { $content = $this->Html->link($event->title, ['action' => 'view', $event->id]); $this->Calendar->addRow($event->date, $content, ['class' => 'event']); } echo $this->Calendar->render(); ?> <?php if (!$this->Calendar->isCurrentMonth()) { ?> <?php echo $this->Html->link(__('Jump to the current month') . '...', ['action' => 'index'])?> <?php } ?>
在您的视图模板中,您可以将链接设置为回退链接,如下所示
<?php echo $this->Html->link( __('List {0}', __('Events')), $this->Calendar->calendarUrlArray(['action' => 'index'], $event->date) ); ?>
它将重定向回日历项链接的当前年份和月份。因此,您有一个持久的日历 - 即使在点击后,用户仍然可以非常容易地浏览日历项。
多日事件
如果您有开始和结束日期,并且这些日期可以跨越多天,请使用
<?php foreach ($events as $event) { $content = ...; $attr = [...]; $this->Calendar->addRowFromTo($event->beginning, $event->end, $content, $attr); } echo $this->Calendar->render(); ?>
配置
完整性
组件验证年份和月份输入,并对无效的输入抛出 404 异常。
组件在各个方向上都有一个最大限制,由 init() 调用定义
$this->Calendar->init($year, $month, 5);
这将允许日历在两个方向上工作 5 年。超出范围的将抛出 404 异常。helper 知道不要为超出限制的日期生成链接。
展示
您可以配置 URL 元素包含月份,是数字(默认)还是文本。
/controller/action/2017/08
/controller/action/2017/august
当加载 helper 时,传递 'monthAsString' => true
以获得文本选项。