Loading...

Integrasi FullCalendar di NuxtJS dan Laravel API (Part 1)

Bismillahirrahmanirrahim,

Pada tutorial ini, saya akan mencoba untuk mengintegrasikan full-calendar di NuxtJS dan Laravel API.

pada contoh ini, saya akan mengimplementasikan add event, update event dan delete event di full-calendar dengan NuxtJS sebagai Frontend dan Laravel sebagai backend-nya.

Step 1: Install Laravel sebagai API

kita perlu menjalankan perintah untuk membuat laravel project.

composer create-project --prefer-dist laravel/laravel laravelFullCalender

Step 2: Koneksi ke Database

Langkah selanjutnya, kita set database untuk aplikasi kita, buka file .env pada project, dan set koneksi database disini.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_fullcalendar
DB_USERNAME=USERNAME_DATABASE_ANDA
DB_PASSWORD=PASSWORD_DATABASE_ANDA

Step 3: Membuat Migration

php artisan make:migration create_events_table 

sekarang buka file migration pada folder database/migrations/ kemudian tambahkan kode berikut.

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateEventsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('events', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->date('start_date');
            $table->date('end_date');
            $table->time('start_time');
            $table->time('end_time');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('events');
    }
}

kemudian jalankan migration

php artisan migrate

Step 4: Membuat Model

untuk membuat Model di laravel anda bisa menggunakan artisan command berikut:

php artisan make:model Event

perintah diatas akan membuat sebuah file baru pada folder App/Models dengan nama Event.php

buka model Event.php kemudian update menjadi seperti berikut:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Event extends Model
{
    use HasFactory;

    protected $fillable = [
        'title','start_date','end_date','start_time','end_time'
    ];
}

Step 5: Membuat Dummy data Event

Sekarang saya akan membuat sebuah data dummy untuk tabel Events, jadi kita akan menambahkan data dummy melalui seeder, jalankan perintah berikut:

php artisan make:seeder EventSeeder

setelah menjalankan perintah diatas, buka file pada folder database/seeds/EventSeeder.php dan tambahkan code berikut:

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use App\Models\Event;

class EventSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $data = [
        	['title'=>'Demo Event-1', 'start_date'=>'2022-07-11', 'end_date'=>'2022-07-12','start_time'=>'09:00','end_time'=>'10:00'],
        	['title'=>'Demo Event-2', 'start_date'=>'2022-07-11', 'end_date'=>'2022-07-13','start_time'=>'08:00','end_time'=>'11:00'],
        	['title'=>'Demo Event-3', 'start_date'=>'2022-07-14', 'end_date'=>'2022-07-14','start_time'=>'13:00','end_time'=>'14:00'],
        	['title'=>'Demo Event-3', 'start_date'=>'2022-07-17', 'end_date'=>'2022-07-17','start_time'=>'11:00','end_time'=>'15:00'],
        ];
        foreach ($data as $key => $value) {
        	Event::create($value);
        }
    }
}

jalankan seeder diatas dengan perintah berikut:

php artisan db:seed --class=EventSeeder

Step 6: Membuat Controller

php artisan make:controller EventController

Setelah menjalankan perintah diatas, kamu bisa cek file EventController.php pada folder app/Http/Controllers, kemudian buka file tersebut.

Step 7: Menampilkan list event

pada file EventController.php kita buat function baru untuk menampilkan list event, tambahkan baris kode berikut:

public function index(Request $request){
        $data = Event::all();
  
        return response()->json($data, 200);
    }

Step 8: Menyimpan, mengupdate dan menghapus event

langkah selanjutnya kita akan membuat operasi untuk menyimpan data event, mengedit dan menghapus event. masih pada file EventController.php tambahkan beris berikut:

public function store(Request $request)
    {
        switch($request->type)
        {
            case 'add':
                    $event = Event::create([
                        'title' => $request->title,
                        'start_date' => date('Y-m-d', strtotime($request->start_date)),
                        'end_date' => date('Y-m-d', strtotime($request->end_date)),
                        'start_time' => date('H:i:s', strtotime($request->start_time)),
                        'end_time' => date('H:i:s', strtotime($request->end_time)),
                    ]);
    
                    return response()->json($event, 201);
                break;
            case 'edit':
                    $event = Event::find($request->id)->update([
                        'title' => $request->title,
                        'start_date' => date('Y-m-d', strtotime($request->start_date)),
                        'end_date' => date('Y-m-d', strtotime($request->end_date)),
                        'start_time' => date('H:i:s', strtotime($request->start_time)),
                        'end_time' => date('H:i:s', strtotime($request->end_time)),
                    ]);
    
                    return response()->json($event,201);
                break;
            case 'delete':
                    $event = Event::find($request->id)->delete();
    
                    return response()->json(
                        array(
                            'success'=>true,
                            'message'=>'Event berhasil dihapus'
                        )
                    );
                break;
        }
    }

secara kesulurhan, file EventController.php akan menjadi seperti berikut:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Event;

class EventController extends Controller
{
    public function index(Request $request){
        $data = Event::all();
  
        return response()->json($data, 200);
    }

    public function store(Request $request)
    {
        switch($request->type)
        {
            case 'add':
                    $event = Event::create([
                        'title' => $request->title,
                        'start_date' => date('Y-m-d', strtotime($request->start_date)),
                        'end_date' => date('Y-m-d', strtotime($request->end_date)),
                        'start_time' => date('H:i:s', strtotime($request->start_time)),
                        'end_time' => date('H:i:s', strtotime($request->end_time)),
                    ]);
    
                    return response()->json($event, 201);
                break;
            case 'edit':
                    $event = Event::find($request->id)->update([
                        'title' => $request->title,
                        'start_date' => date('Y-m-d', strtotime($request->start_date)),
                        'end_date' => date('Y-m-d', strtotime($request->end_date)),
                        'start_time' => date('H:i:s', strtotime($request->start_time)),
                        'end_time' => date('H:i:s', strtotime($request->end_time)),
                    ]);
    
                    return response()->json($event,201);
                break;
            case 'delete':
                    $event = Event::find($request->id)->delete();
    
                    return response()->json(
                        array(
                            'success'=>true,
                            'message'=>'Event berhasil dihapus'
                        )
                    );
                break;
        }
    }
}

Step 7: Update Route api.php

langkah selanjutnya adalah menyiapkan route untuk pemanggilan api nya, sekarang buka file api.php dari folder routes, kemudian tambahkan baris berikut:

Route::get('event',[App\Http\Controllers\EventController::class,'index']);
Route::post('store-event',[App\Http\Controllers\EventController::class,'store']);

kemudian jalankan server

php artisan server

dan endpoint api event dengan menggunakan postman. jika sukses akan maka hasilnya akan seperti ini.

setelah selesai dengan API, langkah selanjutnya kita akan masuk di Frontend.

setelah ini kita akan install NuxtJS.

Share this Post: