kami / booking-bundle
为您的 Symfony 项目添加一些预订功能
Requires
- php: >=5.3.2
- doctrine/doctrine-bundle: ~1.6
- doctrine/orm: ~2.5
- symfony/framework-bundle: >2.8
- symfony/symfony: >2.8
- twig/extensions: ~1.4
- twig/twig: ~1.3
Requires (Dev)
- doctrine/doctrine-fixtures-bundle: dev-master
- phpunit/phpunit: ~5.5
Suggests
- doctrine/mongodb-odm: 1.0.*@dev
This package is auto-updated.
Last update: 2024-08-29 04:09:15 UTC
README
Symfony 2 应用的预订组件。组件提供了一些用于处理网站预订的有用功能。
安装
1. 下载
安装此组件的首选方式是使用 composer
下载组件
$ php composer.phar require "kami/booking-bundle"
2. 添加到您的 Kernel
<?php // app/AppKernel.php public function registerBundles() { $bundles = array( // ... new Kami\BookingBundle\KamiBookingBundle(), ); }
3. 创建您的实体
Doctrine ORM
组件为您的实体提供了所有必要的映射。只需创建您的实体类,并从 Kami\BookingBundle\Entity\Booking
扩展它,创建您的 id
字段,并设置您想要预订的项目的关系。
<?php namespace Vendor\Bundle\Entity; use Kami\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 }
现在我们准备开始使用了!
预订服务
此组件的核心组件是预订服务。您可以通过以下方式在控制器中获取它
<?php public function bookingAction() { $this->get('booker'); /** @var \Kami\BookingBundle\Helper\Booker */ }
预订服务有以下方法
isAvailableForPeriod($item, \DateTime $start, \DateTime $end)
检查您的项目在指定时间段内是否可用,返回 boolean
isAvailableForDate($item, \DateTime $date)
检查您的项目在指定日期是否可用,返回 boolean
whereAvailableForPeriod(QueryBuilder $queryBuilder, $join, \DateTime $start, \DateTime $end)
更新您的 QueryBuilder
并返回相同的 QueryBuilder
对象,并添加了连接和条件语句。
注意:
$join
是array('field', 'alias')
whereAvailableForDate(QueryBuilder $queryBuilder, $join, \DateTime $date)
更新您的 QueryBuilder
并返回相同的 QueryBuilder
对象,并添加了连接和条件语句。
注意:
$join
是array('field', 'alias')
book($item, \DateTime $start, \DateTime $end)
预订您的项目返回 Entity | false
(成功时返回 Entity
,失败时返回 false
)
日历 Twig 扩展
组件还提供了一些酷炫的 Twig 扩展。要在模板中使用它,请尝试以下步骤
{{ kami_booking_calendar(item, "now", 4) }}
在哪里
item
- 是您的可预订项目的对象
now
- 是任何允许 \DateTime::__construct()
的日期
4
- 要渲染的月份数量
覆盖模板
在 Symfony 应用程序中,模板可以像往常一样覆盖。只需创建以下目录结构
app/Resources/views/KamiBookingBundle/Calendar/month.html.twig