carlescliment / calendar-bundle
用于处理日历事件的工具包
Requires
- php: >=5.3.2
- sensio/framework-extra-bundle: *
Requires (Dev)
- doctrine/doctrine-bundle: v1.5.0
- doctrine/orm: *
- phpunit/phpunit: *
- symfony/symfony: ~2.5
This package is not auto-updated.
Last update: 2024-09-14 14:56:07 UTC
README
CalendarBundle 提供了一个内置的日历,用于管理事件,无需依赖第三方服务如 Google。它包含四个不同的默认视图:日程表、按天、按周和按月。如果您需要更多定制,可以使用工具包作为简单的日历 API,并在其基础上构建自己的逻辑。
安装
1. 更新您的供应商
将以下行添加到您的 composer.json
"require": {
"carlescliment/calendar-bundle": "dev-master"
}
执行 php composer.phar update carlescliment/calendar-bundle
2. 在 app/AppKernel.php
中加载工具包
$bundles = array(
// ...
new BladeTester\CalendarBundle\BladeTesterCalendarBundle(),
);
3. 更新您的路由
// ...
BladeTesterCalendarBundle:
resource: "@BladeTesterCalendarBundle/Resources/config/routing.yml"
prefix: /
4. 创建您的日历工具包
创建一个新的工具包,扩展 BladeTesterCalendarBundle
namespace Your\OwnCalendarBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class YourOwnCalendarBundle extends Bundle
{
public function getParent()
{
return 'BladeTesterCalendarBundle';
}
}
警告:如果您的工具包包含自己的路由文件,请记住删除它或完全覆盖父工具包的路径。
将其添加到 AppKernel。
$bundles = array(
// ...
new Your\OwnCalendarBundle\YourOwnCalendarBundle(),
);
5. 更新架构
php app/console doctrine:schema:update --force
6. 安装资产
php app/console assets:install
使用日历
访问 http://www.example.com/calendar 并享受吧 :)
定制工具包
如果您想覆盖工具包的默认视图以使用您的设计和标记,请按照以下步骤操作。
1. 覆盖默认基本模板
将 Resources/views/Base/base.html.twig
中的模板复制到您自己的工具包中,并修改它以扩展基本模板。
2. 将资产添加到基本模板
<script type="text/javascript" src="{{ asset('bundles/bladetestercalendar/js/jquery-1.9.1.min.js') }}"></script>
<link rel="stylesheet" href="{{ asset('bundles/bladetestercalendar/css/calendar.css') }}" />
<script type="text/javascript" src="{{ asset('bundles/bladetestercalendar/js/calendar.js') }}"></script>
注意:如果您的模板已包含 jQuery,请删除包含 jQuery 的行。
如何覆盖默认实体
您可以定义自己的实体。首先,创建您自定义的实体
namespace Your\OwnCalendarBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use BladeTester\CalendarBundle\Entity\Event as BaseEvent;
/**
* @ORM\Entity(repositoryClass="BladeTester\CalendarBundle\Repository\EventRepository")
* @ORM\Table(name="events")
*/
class Event extends BaseEvent
{
// ... your implementation goes here
}
然后修改您的 app/config/config.yml
blade_tester_calendar:
driver: doctrine/orm
engine: twig
classes:
event:
entity: Your\OwnBundle\Entity\Event
category:
entity: Your\OwnBundle\Entity\EventCategory
扩展行为
通过在您的模型和实体中使用继承,可以轻松扩展此工具包的行为。如果还不够,您可以注册监听器来处理日历事件。
持久化前事件
在项即将被创建到数据库中时触发。
your_own_calendar_listener:
class: Your\OwnCalendarBundle\Event\CalendarListener
tags:
- { name: kernel.event_listener, event: calendar.pre-persist, method: onPrePersist }
namespace Your\OwnCalendarBundle\Event; use BladeTester\CalendarBundle\Event\CalendarEvent; class CalendarListener { public function onPrePersist(CalendarEvent $event) { $event_model = $event->getEvent(); // do whatever with the object before persisting it. } }
添加后事件
在项被添加到数据库后触发。
your_own_calendar_listener:
class: Your\OwnCalendarBundle\Event\CalendarListener
tags:
- { name: kernel.event_listener, event: calendar.post-add, method: onPostAdd }
更新后事件
在项被更新后触发。
your_own_calendar_listener:
class: Your\OwnCalendarBundle\Event\CalendarListener
tags:
- { name: kernel.event_listener, event: calendar.post-update, method: onPostUpdate }
测试
CalendarBundle 包含单元测试和功能测试。下载工具包,根据 travis.yml
文件创建数据库,并在 src/BladeTester/CalendarBundle/Tests/App/parameters.ini
中配置访问设置。运行以下命令
cd /path/to/calendar-bundle
composer update
php vendor/bin/phpunit
致谢
- 作者: Carles Climent(编程)
- 作者: Marcos Calatayud(标记和设计)
- 贡献者: Doug Hayward(法语翻译,修复)
- 贡献者: Rubén Egiguren(巴斯克语翻译)
- 贡献者: Andrzej Jarzebowski(波兰语翻译)
贡献和反馈
任何反馈和贡献都将非常受欢迎。