sclinternet / bm-calendar
提供封锁天数功能的日历模块。
Requires
- php: >=5.3.3
- zendframework/zendframework: 2.*
Requires (Dev)
- phpmd/phpmd: 1.4.0
- phpunit/phpunit: 3.7.*
- satooshi/php-coveralls: dev-master
- squizlabs/php_codesniffer: 1.*
This package is not auto-updated.
Last update: 2024-09-23 14:03:22 UTC
README
提供封锁天数功能的日历模块。
安装
可以通过运行 composer 来轻松完成安装:
composer.php require sclinternet/bm-calendar
当提示输入版本号时,请输入 dev-master
。
在 composer 完成后,简单地将 BmCalendar
添加到您应用程序配置中的 modules
部分。
基本用法
只需创建一个像这样的日历:
$calendar = new \BmCalendar\Calendar();
然后使用视图辅助函数在视图中显示一个月
echo $this->calendar($calendar)->showMonth(2013, 05);
视图辅助函数
默认情况下,视图辅助函数将通过 BmCalendar\Renderer\HtmlCalendar
创建的简单 HTML 表格渲染月份。
更改开始日
默认情况下,日历将以星期一作为第一列的开始,如果您想更改这一点,可以像这样调用视图辅助函数。
echo $this->calendar($calendar) ->setStartDay(\BmCalendar\DayInterface::WEDNESDAY) ->showMonth(2013, 5);
渲染器类
您还可以通过实现 BmCalendar\Renderer\RendererInterface
来创建自己的渲染器类,然后像这样告诉视图辅助函数使用您的渲染器:
echo $this->calendar($calendar)->setRenderer(new MyRenderer())->showMonth(2013, 5);
部分
或者,您可以通过使用部分模板来自定义渲染过程。
为此,只需像这样调用视图辅助函数:
echo $this->calendar($calendar)->setPartial('partial-name')->showMonth(2013, 5);
部分将传递以下参数
- $startDay - 日历开始的那一周的星期数(int 1-7)
- $calendar -
BmCalendar\Calendar
的实例 - $month - 要渲染的月份(int)
- $year - 要渲染的月份所属的年份(int)
日提供者
日提供者用于向日历中的某一天添加额外状态。
状态必须实现 \BmCalendar\State\DayStateInterface
。
日提供者可以像这样实现:
use BmCalendar\DayProviderInterface; use BmCalendar\Day; use BmCalendar\Month; class MyDayProvider implements DayProviderInterface { public $database; public function createDay(Month $month, $dayNo) { $day = new Day($month, $dayNo); $avaliable = $this->database->checkAvailability( $month->getYear()->value(), $month->value(), $dayNo ); if (!$available) { $day->addState(new BookedState()); return $day; } $day->addState(new AvailableState()); $day->setAction('http://url-to-booking-form'); return $day; } }
要使用您的日提供者,只需将其传递给日历构造函数,像这样:
$provider = new MyDayProvider(); $provider->database = new AvailabilityDatabasesChecker(); $calendar = new \BmCalendar\Calendar($provider);
日状态
日状态允许您向日历中的某一天添加值(例如,如果那天有活动)。
创建日状态类
日状态是一个实现了 BmCalendar\State\DayStateInterface
的类,它提供了一个简单的静态方法 type()
来标识状态。
还有一个 BmCalendar\State\AbstractDayState
类可用,它可以直接扩展,这将为您实现 type()
方法。
您可以像这样快速定义状态:
use BmCalendar\State\AbstractDayState; class HasEventState extends AbstractDayState { }
使用日状态
要将状态添加到 Day
对象,只需调用 addState($state)
方法
$day->addState(new HasEventState())
要获取附加到 Day
对象的所有状态的列表,您可以调用
$day->getStates();
如果您想检查给定天上的特定类型的状态,可以使用静态 type()
方法,像这样
$state = $day->getState(HasEventState::type());
如果 Day
不包含请求类型的状态,则返回 NULL
。