Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Bookingbundle Laravel Package

edemy/bookingbundle

View on GitHub
Deep Wiki
Context7

Getting Started

Minimal Setup

  1. Installation

    composer require edemy/bookingbundle
    

    Ensure eDemyFramework is installed and configured as a base dependency.

  2. Bundle Registration Add to config/bundles.php:

    return [
        // ...
        Edemy\BookingBundle\EdemyBookingBundle::class => ['all' => true],
    ];
    
  3. First Use Case: Basic Booking Entity Create a booking entity (e.g., src/Entity/Booking.php):

    namespace App\Entity;
    
    use Edemy\BookingBundle\Entity\Booking as BaseBooking;
    
    class Booking extends BaseBooking
    {
        // Extend or override base methods
    }
    
  4. Database Migration Run migrations (check src/Resources/migrations for default schema):

    php bin/console doctrine:migrations:diff
    php bin/console doctrine:migrations:migrate
    
  5. Basic CRUD via Controller

    use Edemy\BookingBundle\Controller\BookingController;
    
    class AppBookingController extends BookingController
    {
        // Override actions as needed
    }
    

Implementation Patterns

Core Workflows

  1. Booking Creation Use the BookingManager service to handle business logic:

    $booking = $this->get('edemy_booking.manager')->create([
        'user_id' => $user->getId(),
        'service_id' => $service->getId(),
        'start_at' => $startDateTime,
        'end_at' => $endDateTime,
    ]);
    
  2. Validation & Rules Extend Edemy\BookingBundle\Validator\Constraints\Booking for custom rules:

    # config/validation.yml
    App\Entity\Booking:
        constraints:
            - Edemy\BookingBundle\Validator\Constraints\Booking:
                maxOverlap: 3
                minDuration: 3600
    
  3. Recurring Bookings Use the RecurringBooking trait in your entity:

    use Edemy\BookingBundle\Entity\RecurringBooking;
    
    class Booking extends BaseBooking implements RecurringBooking
    {
        // Implement recurring logic
    }
    
  4. Integration with eDemy Framework

    • User Context: Leverage eDemyFramework\UserBundle for authentication:
      $user = $this->get('e_demy.user.context')->getUser();
      
    • Events: Subscribe to booking events (e.g., BookingCreatedEvent):
      $dispatcher->addListener('booking.created', function($event) {
          // Custom logic
      });
      
  5. API Endpoints Use FOSRestBundle or API Platform for RESTful endpoints:

    # config/routes/edemy_booking.yaml
    edemy_booking:
        resource: "@EdemyBookingBundle/Resources/config/routing.yml"
        type: rest
        prefix: /api/bookings
    

Gotchas and Tips

Common Pitfalls

  1. Missing eDemy Framework Dependencies

    • Ensure eDemyFramework/UserBundle and eDemyFramework/CoreBundle are installed.
    • Error: Class 'Edemy\BookingBundle\DependencyInjection\EdemyBookingExtension' not found → Verify bundle registration order.
  2. Timezone Handling

    • Default timezone is UTC. Override in config/packages/edemy_booking.yaml:
      edemy_booking:
          timezone: 'Europe/Paris'
      
    • Debug: Use date_default_timezone_get() to verify.
  3. Recurring Booking Conflicts

    • Default overlap validation may block all recurring bookings. Adjust in BookingManager:
      $manager->setOverlapValidationMode('skip'); // or 'merge'
      
  4. Doctrine ORM Conflicts

    • If extending BaseBooking, ensure your entity annotations match the bundle’s schema:
      /** @ORM\Table(name="bookings") */
      /** @ORM\InheritanceType("SINGLE_TABLE") */
      
  5. Caching Issues

    • Clear cache after extending entities or services:
      php bin/console cache:clear
      

Debugging Tips

  • Enable Debug Mode:

    # config/packages/dev/edemy_booking.yaml
    edemy_booking:
        debug: true
    

    Logs booking operations to var/log/edemy_booking.log.

  • SQL Logging:

    php bin/console doctrine:query:sql "SELECT * FROM bookings"
    

Extension Points

  1. Custom Booking States Extend the BookingState enum:

    namespace App\Entity;
    
    use Edemy\BookingBundle\Entity\BookingState as BaseState;
    
    class BookingState extends BaseState
    {
        public const CANCELLED_BY_ADMIN = 'cancelled_by_admin';
    }
    
  2. Payment Integration Hook into BookingPaidEvent:

    $dispatcher->addListener('booking.paid', function($event) {
        $this->get('payment.gateway')->process($event->getBooking());
    });
    
  3. Frontend Templates Override Twig templates in templates/bundles/EdemyBookingBundle/:

    {# templates/bundles/EdemyBookingBundle/Booking/calendar.html.twig #}
    {% extends 'EdemyBookingBundle::Booking/calendar.html.twig' %}
    
  4. CLI Commands Create custom commands by extending Edemy\BookingBundle\Command\AbstractBookingCommand:

    namespace App\Command;
    
    use Edemy\BookingBundle\Command\AbstractBookingCommand;
    
    class SyncBookingsCommand extends AbstractBookingCommand
    {
        protected function configure()
        {
            $this->setName('app:booking:sync');
        }
    }
    
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
cuci/prototurk-sdk-symfony
clementtalleu/easyadmin-markdown-bundle
codeflextech/permission-manager
karnoweb/livewire-datepicker
sayedenam/sayed-dashboard
milito/query-filter
apiboxsym/user-bundle
apiboxsym/health-check-bundle
jayeshmepani/jpl-moshier-ephemeris-php
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui
babelqueue/php-sdk
facebook/capi-param-builder-php
babelqueue/symfony
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager