melifaro/melifaro-booking-bundle

此包已被废弃,不再维护。作者建议使用https://github.com/kamilabs/BookingBundle包代替。

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

v1.0-beta 2014-04-27 13:00 UTC

This package is auto-updated.

Last update: 2022-02-01 12:34:35 UTC


README

SensioLabsInsight

Build Status

Symfony 2应用程序的预订Bundle。Bundle提供了一些处理网站预订的有用功能。

安装

1. 下载

安装此Bundle的首选方法是使用composer

下载Bundle

$ php composer.phar require "melifaro/melifaro-booking-bundle:dev-master"

2. 将其添加到您的Kernel

<?php

// app/AppKernel.php


public function registerBundles()
{
    $bundles = array(
        // ...

        new Melifaro\BookingBundle\MelifaroBookingBundle(),
    );
}

3. 创建您的实体

Doctrine ORM

Bundle已为您实体提供所有必要的映射。只需创建您的实体类,并从Melifaro\BookingBundle\Entity\Booking扩展它,创建您的id字段,并设置您想要预订的项目的关系。

<?php

namespace Vendor\Bundle\Entity;

use Melifaro\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
}

现在我们可以大干一场了!

预订者服务

此Bundle的核心组件是预订者服务。您可以通过以下方式在控制器中获取它

<?php

public function bookingAction()
{
    $this->get('booker'); /** @var \Melifaro\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对象,其中添加了连接和WHERE子句。

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

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

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

book($item, \DateTime $start, \DateTime $end) 预订您的项目,返回Entity | false(成功时为Entity,失败时为false

日历Twig扩展

Bundle还提供了一些酷炫的Twig扩展。要在模板中使用它,只需尝试以下操作

{{ melifaro_booking_calendar(item, "now", 4) }}

在哪里

item - 是您的可预订项目的对象

now - 是任何允许的\DateTime::__construct()的日期

4 - 要渲染的月份数

覆盖模板

在Symfony 2应用程序中,模板可以像往常一样覆盖。只需创建以下目录结构

app/Resources/views/MelifaroBookingBundle/Calendar/month.html.twig