slad / slad-booking-bundle
为您的Symfony 2项目添加一些预订功能
Requires
- php: >=5.3.2
- doctrine/doctrine-bundle: ~1.1
- doctrine/orm: >=2.3
- symfony/browser-kit: ~2.3
- symfony/filesystem: ~2.3
- symfony/finder: ~2.3
- symfony/framework-bundle: ~2.3
- symfony/options-resolver: ~2.3
- symfony/twig-bundle: ~2.3
- twig/extensions: ~1.0
- twig/twig: ~1.5
Requires (Dev)
- doctrine/doctrine-fixtures-bundle: dev-master
- phpunit/phpunit: ~3.7
Suggests
- doctrine/mongodb-odm: 1.0.*@dev
This package is not auto-updated.
Last update: 2024-09-14 18:26:11 UTC
README
该项目是从 melifaro/melifaro-booking-bundle 分支出来的。将会对代码进行修改以匹配汽车租赁业务
Symfony 2应用的预订功能包。Bundle提供了处理网站预订的一些有用功能。
安装
1. 下载
推荐使用 composer 安装此bundle
下载bundle
$ php composer.phar require "slad/slad-booking-bundle:dev-master"
2. 添加到您的Kernel
<?php // app/AppKernel.php public function registerBundles() { $bundles = array( // ... new Slad\BookingBundle\SladBookingBundle(), ); }
3. 创建您的实体
Doctrine ORM
Bundle已经为您的实体提供了所有必要的映射。只需创建您的实体类并从 Slad\BookingBundle\Entity\Booking 继承,创建您的 id 字段并为要预订的项目设置合适的关联。
<?php namespace Vendor\Bundle\Entity; use Slad\BookingBundle\Entity\Booking as BaseClass; /** * Booking * * @ORM\Entity() * @ORM\Table(name="booking") */ class Booking extends BaseClass { /** * @var integer * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ protected $id; /** * @var \Vendor\Bundle\Entity\BookableItem * * @ORM\ManyToOne(targetEntity="BookableItem", inversedBy="bookings") * @ORM\JoinColumn(name="property_id", referencedColumnName="id") */ protected $item; // Don't forget about getters and setters }
4. 在config.yml中配置预订bundle
# Booking slad_booking: entity_class: AppBundle\Entity\Booking
现在我们准备好大显身手了!
预订者服务
此bundle的核心组件是预订者服务。您可以在控制器中使用以下方式获取它
<?php public function bookingAction() { $this->get('booker'); /** @var \Slad\BookingBundle\Helper\Booker */ }
预订者服务有以下方法
isAvailableForPeriod($item, \DateTime $start, \DateTime $end) 检查项目在指定时间段内是否可用,返回 boolean
isAvailableForDate($item, \DateTime $date) 检查项目在指定日期是否可用,返回 boolean
whereAvailableForPeriod(QueryBuilder $queryBuilder, $join, \DateTime $start, \DateTime $end) 更新您的 QueryBuilder 并返回添加了连接和where子句的相同 QueryBuilder 对象。
注意:
$join是array('field', 'alias')
whereAvailableForDate(QueryBuilder $queryBuilder, $join, \DateTime $date) 更新您的 QueryBuilder 并返回添加了连接和where子句的相同 QueryBuilder 对象。
注意:
$join是array('field', 'alias')
book($item, \DateTime $start, \DateTime $end) 预订项目返回 Entity | false (Entity 表示成功,false 表示失败)
日历Twig扩展
Bundle还提供了酷炫的Twig扩展。要在模板中使用它,只需尝试以下方法
{{ slad_booking_calendar(item, "now", 4) }}
在哪里
item - 是您的可预订项目的对象
now - 是允许的任何日期,适用于 \DateTime::__construct()
4 - 在目标日期之后渲染的月份数量
覆盖模板
在Symfony 2应用程序中,模板可以像通常一样被覆盖。只需创建以下目录结构
app/Resources/views/SladBookingBundle/Calendar/month.html.twig