migmae / laravel-fullcalendar
Laravel component for fullcalendar package
V1.0.5
2016-12-10 19:50 UTC
Requires
- php: >=5.6.4
- bower-asset/fullcalendar: v3.0.1
- laravel/framework: 5.3.*
This package is not auto-updated.
Last update: 2024-11-18 15:26:58 UTC
README
Installation
The preferred way to install this extension is through composer.
To install, either run
$ php composer.phar require edofre/laravel-fullcalendar
or add
"edofre/laravel-fullcalendar": "V1.0.5"
to the require
section of your composer.json
file.
Configuration
Publish assets and configuration files
php artisan vendor:publish --tag=config
php artisan vendor:publish --tag=fullcalendar
Add the ServiceProvider to your config/app.php
'providers' => [ ... Edofre\Fullcalendar\FullcalendarServiceProvider::class, ],
And add the facade
'aliases' => [ ... 'Fullcalendar' => Edofre\Fullcalendar\Facades\Fullcalendar::class, ],
Example
Below is an example of a controller action configuring the calendar
public function index(\Illuminate\View\Factory $view) { // Generate a new fullcalendar instance $calendar = new \Edofre\Fullcalendar\Fullcalendar($view); // You can manually add the objects as an array $events = $this->getEvents(); $calendar->setEvents($events); // Or you can add a route and return the events using an ajax requests that returns the events as json $calendar->setEvents(route('fullcalendar-ajax-events')); // Set options $calendar->setOptions([ 'locale' => 'nl', 'weekNumbers' => true, 'selectable' => true, 'defaultView' => 'agendaWeek', // Add the callbacks 'eventClick' => \Edofre\Fullcalendar\JsExpression(" function(event, jsEvent, view) { console.log(event); } "), 'viewRender' => new \Edofre\Fullcalendar\JsExpression(" function( view, element ) { console.log(\"View \"+view.name+\" rendered\"); } "), ]); // Check out the documentation for all the options and callbacks. // https://fullcalendar.io/docs/ return view('fullcalendar.index', [ 'calendar' => $calendar, ]); } /** * @param Request $request * @return string */ public function ajaxEvents(Request $request) { // start and end dates will be sent automatically by fullcalendar, they can be obtained using: // $request->get('start') & $request->get('end') $events = $this->getEvents(); return json_encode($events); } /** * @return array */ private function getEvents() { $events = []; $events[] = new \Edofre\Fullcalendar\Event([ 'id' => 0, 'title' => 'Rest', 'allDay' => true, 'start' => Carbon::create(2016, 11, 20), 'end' => Carbon::create(2016, 11, 20), ]); $events[] = new \Edofre\Fullcalendar\Event([ 'id' => 1, 'title' => 'Appointment #' . rand(1, 999), 'start' => Carbon::create(2016, 11, 15, 13), 'end' => Carbon::create(2016, 11, 15, 13)->addHour(2), ]); $events[] = new \Edofre\Fullcalendar\Event([ 'id' => 2, 'title' => 'Appointment #' . rand(1, 999), 'editable' => true, 'startEditable' => true, 'durationEditable' => true, 'start' => Carbon::create(2016, 11, 16, 10), 'end' => Carbon::create(2016, 11, 16, 13), ]); $events[] = new \Edofre\Fullcalendar\Event([ 'id' => 3, 'title' => 'Appointment #' . rand(1, 999), 'editable' => true, 'startEditable' => true, 'durationEditable' => true, 'start' => Carbon::create(2016, 11, 14, 9), 'end' => Carbon::create(2016, 11, 14, 10), 'backgroundColor' => 'black', 'borderColor' => 'red', 'textColor' => 'green', ]); return $events; }
You can then render the calendar by generating the HMTL and scripts
{!! $calendar->generate() !!}