Full calendar events module for Laravel

1.0.0 2017-11-03 17:59 UTC

This package is not auto-updated.

Last update: 2021-09-11 17:09:09 UTC


Build Status

Laravel 5 module to integrate a fullcalendar javascript plugin. It provides simple way to store events in the database and supports event repeat.


Use the standard way composer require todstoychev/calendar-events.

Register the service provider at your Laravel config/app.php. You should add Todstoychev\CalendarEvents\CalendarEventsServiceProvider::class.

Run php artisan vendor:publish to publish config and other assets.

This module provides also 3 migration files. It will be necessary to run them php artisan migrate.



This module comes with a ready to use form template. The form can be used as edit and add form. In your blade use @include('calendar-events::form') to include it in your page. Also feel free to override and extend this template.

To use this form add to your page you will need a javascript file provided from the module. After running vendor publish command you should be able to find public/js/calendar-events.js. This script is necessary to control provided form. It contains simple JS object with few methods inside.


Since this module has service provider at the container, you can access CalendarEventsService::class in your controller like this:

protected $calendarEventsService;

    public function __construct(CalendarEventsService $calendarEventsService)
        $this->calendarEventsService = $calendarEventsService;

This the main module class that contains all the necessary methods to interact with.

Module provides a request class which can be used to validate your input data. Here an example usage of how to create new event.


namespace App\Http\Controllers;

use Todstoychev\CalendarEvents\Http\Requests\CalendarEventRequest;
use Todstoychev\CalendarEvents\Services\CalendarEventsService;

class IndexController extends Controller
    protected $calendarEventsService;

    public function __construct(CalendarEventsService $calendarEventsService)
        $this->calendarEventsService = $calendarEventsService;

    public function postAdd(CalendarEventRequest $request)

The service class has methods to provide fully functional crud. To update event you can use CalendarEventsService::updateCalendarEvent(). To get a single event use CalendarEventsService::getCalendarEvent(). CalendarEventsService::getAllEvents() will fetch all calendar events. The most important method is probably CalendarEventsService::getAllEventsToJson(). This one should be used with the javascript plugin. The method provides the necessary json string. Here example of usage. In your controller create a method like this one:

     public function getJson()
         echo $this->calendarEventsService->getAllEventsAsJson();

This one should be used with fullcalendar like this:

<div id="calendar"></div>
<script src="{{ asset('jquery.js') }}"></script>
<script src="{{ asset('js/calendar-events.js') }}"></script> <!-- This is where the CalendarEvents object comes from. -->
<script src="{{ asset('fullcalendar/lib/moment.min.js') }}"></script>
<script src="{{ asset('fullcalendar/fullcalendar.min.js') }}"></script>
    $(document).ready(function () {
            eventSources: [
                    url: ''

Do not forget that you will need to include fullcalendar plugin in your project.


  • Add more PHPUnit test to achieve maximum coverage.
  • Create Bootstrap 3 compatible templates for the form.
  • Add functionality to repeat event each week, month and year.
  • Add functionality to select weekdays on which event will be repeated.
  • Add functionality to repeat event after number of days.
  • Add functionality to repeat event certain times.