kami/booking-bundle

为您的 Symfony 项目添加一些预订功能

安装: 622

依赖项: 0

建议者: 0

安全: 0

星标: 9

关注者: 3

分支: 4

开放问题: 2

类型:symfony-bundle

1.0 2017-02-06 12:48 UTC

This package is auto-updated.

Last update: 2024-08-29 04:09:15 UTC


README

Build Status SensioLabsInsight HHVM Status

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 对象,并添加了连接和条件语句。

注意: $joinarray('field', 'alias')

whereAvailableForDate(QueryBuilder $queryBuilder, $join, \DateTime $date) 更新您的 QueryBuilder 并返回相同的 QueryBuilder 对象,并添加了连接和条件语句。

注意: $joinarray('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