Selamat datang di proyek belajar pertama Anda dengan Laravel! Aplikasi ini adalah sebuah sistem CRUD (Create, Read, Update, Delete) sederhana untuk mengelola data "item". Tujuan utama dari proyek ini adalah untuk memahami dasar-dasar framework Laravel dan bagaimana komponen-komponen utamanya bekerja sama.
Dokumentasi ini dibuat khusus untuk Anda, dengan mempertimbangkan latar belakang Anda di PHP, JavaScript, React, dan Next.js, agar proses belajar menjadi lebih intuitif.
- Laravel 11: Framework utama berbasis PHP.
- Filament 3: Admin panel yang dibuat di atas TALL stack (Tailwind CSS, Alpine.js, Livewire, Laravel) untuk membuat antarmuka CRUD dengan cepat.
- PHP 8.2: Bahasa pemrograman yang mendasari Laravel.
- MySQL: Database untuk menyimpan data.
- Vite: Build tool modern untuk aset frontend (CSS & JS).
Berikut adalah langkah-langkah untuk menjalankan proyek ini dari awal.
-
Clone Repositori (Jika Anda mulai dari awal)
git clone [URL_REPOSITORI_ANDA] cd crud-app -
Install Dependensi PHP Gunakan Composer untuk menginstal semua paket PHP yang dibutuhkan oleh Laravel.
composer install
-
Buat File Environment Salin file
.env.examplemenjadi.env. File ini berisi semua konfigurasi spesifik untuk lingkungan Anda, termasuk koneksi database.copy .env.example .env
-
Konfigurasi Database Buka file
.envdan sesuaikan variabel berikut dengan pengaturan database Anda:DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=crud_laravel DB_USERNAME=root DB_PASSWORD= -
Generate Kunci Aplikasi Setiap aplikasi Laravel membutuhkan kunci enkripsi yang unik.
php artisan key:generate
-
Jalankan Migrasi Database Perintah ini akan membuat semua tabel di database Anda berdasarkan file "migrasi" yang ada di
database/migrations.php artisan migrate
-
Install Dependensi JavaScript Gunakan NPM untuk menginstal aset frontend.
npm install
-
Jalankan Server Pengembangan Perintah ini akan menjalankan server pengembangan lokal di
http://127.0.0.1:8000.php artisan serve
Anda juga perlu menjalankan Vite untuk kompilasi aset frontend secara real-time. Buka terminal baru dan jalankan:
npm run dev
-
Akses Aplikasi
- Aplikasi utama: http://127.0.0.1:8000
- Admin Panel Filament: http://127.0.0.1:8000/admin
Mari kita bedah bagaimana proyek ini menggunakan fitur-fitur utama Laravel.
Laravel dibangun di atas pola arsitektur MVC.
-
Model:
app/Models/items.php- Apa itu? Model merepresentasikan sebuah tabel di database Anda. Dalam kasus ini, model
itemsterhubung dengan tabelitems. Laravel menyebut ini Eloquent ORM. - Hubungan dengan PHP/React: Anggap saja ini seperti sebuah class di PHP yang secara ajaib sudah memiliki metode untuk berinteraksi dengan tabel database (seperti
find(),create(),all()). Di dunia React, ini mirip seperti Anda mendefinisikan "shape" atau bentuk dari data yang Anda fetch dari API. - Properti
$fillable: Ini adalah fitur keamanan untuk mencegah mass-assignment vulnerability. Hanya kolom yang disebutkan di sini yang bisa diisi secara massal (misalnya, saat membuat item baru dari sebuah form).
- Apa itu? Model merepresentasikan sebuah tabel di database Anda. Dalam kasus ini, model
-
View:
resources/views/- Apa itu? Ini adalah lapisan presentasi, yaitu file-file HTML. Laravel menggunakan templating engine bernama Blade.
- Dalam Proyek Ini: Kita tidak banyak menyentuh Blade secara langsung karena Filament secara otomatis membuatkan semua tampilan (view) untuk kita. Namun, jika Anda ingin membuat halaman publik, Anda akan membuat file
.blade.phpdi direktori ini. - Hubungan dengan React: Blade adalah "React"-nya Laravel, tetapi server-rendered. Sintaks seperti
@if,@foreach, dan{{ $variable }}dieksekusi di server untuk menghasilkan HTML. Ini mirip dengan JSX, tetapi untuk PHP.
-
Controller: (Digantikan oleh Filament Resource)
- Apa itu? Controller bertindak sebagai perantara antara Model dan View. Ia menerima request, mengambil data dari Model, dan mengirimkannya ke View.
- Dalam Proyek Ini: Kita menggunakan Filament Resource (
app/Filament/Resources/ItemsResource.php) yang berfungsi seperti "Controller super" untuk operasi CRUD. Ia menangani semua logika untuk menampilkan, membuat, dan mengedit dataitems.
- Apa itu? Migrasi adalah sistem kontrol versi (seperti Git) untuk skema database Anda. Setiap file di sini merepresentasikan satu perubahan pada database (membuat tabel, menambah kolom, dll).
- Hubungan dengan PHP: Daripada menulis
CREATE TABLEmanual di SQL, Anda mendefinisikannya dalam bentuk kode PHP. Ini membuat skema database Anda portabel dan mudah dimodifikasi oleh tim. - Metode
up()dandown():up()berisi perubahan yang ingin Anda terapkan, dandown()berisi cara untuk membatalkan perubahan tersebut. - Perintah Penting:
php artisan migrate: Menjalankan migrasi yang belum dijalankan.php artisan migrate:fresh: Menghapus semua tabel dan menjalankan ulang semua migrasi (berguna saat pengembangan).php artisan make:migration nama_migrasi: Membuat file migrasi baru.
- Apa itu? File ini mendefinisikan endpoint atau URL aplikasi Anda dan menghubungkannya ke Controller atau fungsi tertentu.
- Hubungan dengan Next.js/React Router: Ini sangat mirip dengan bagaimana Anda mendefinisikan rute di Next.js (misalnya, di dalam folder
pagesatauapp) atau menggunakan library seperti React Router. - Dalam Proyek Ini: Rute utama (
/) mungkin ada di sini, tetapi semua rute untuk/admin/...diatur secara otomatis oleh Filament.
Filament adalah "game-changer" di proyek ini. Ia adalah kumpulan komponen TALL Stack yang memungkinkan kita membuat antarmuka admin dengan sangat cepat.
File utama yang perlu Anda perhatikan adalah app/Filament/Resources/ItemsResource.php.
-
protected static ?string $model = Items::class;Baris ini memberitahu Filament bahwa Resource ini bertanggung jawab untuk mengelola modelItems. -
public static function form(Form $form): Form- Apa itu? Metode ini mendefinisikan field-field apa saja yang akan muncul di form "Create" dan "Edit".
- Hubungan dengan React: Ini seperti Anda membangun sebuah form di React. Setiap
Forms\Components\...(sepertiTextInput,Textarea) adalah sebuah komponen input. Properti seperti->required(),->numeric()adalah props yang Anda teruskan ke komponen tersebut.
-
public static function table(Table $table): Table- Apa itu? Metode ini mendefinisikan kolom-kolom apa saja yang akan ditampilkan di halaman list (tabel).
- Hubungan dengan React: Mirip dengan mendefinisikan kolom untuk library tabel di React (seperti React Table atau AG Grid). Setiap
Tables\Columns\...adalah komponen kolom.
Livewire: "React" untuk Backend Filament berjalan di atas Livewire. Livewire memungkinkan Anda membangun antarmuka dinamis menggunakan PHP, bukan JavaScript. Saat Anda berinteraksi dengan halaman Filament (misalnya, sorting tabel, validasi form), Livewire secara cerdas mengirim request ke server dan hanya me-render ulang bagian halaman yang berubah, mirip seperti cara kerja React.
Setelah memahami proyek ini, berikut adalah beberapa ide untuk memperdalam pemahaman Anda tentang Laravel:
- Buat Halaman Publik: Buat Controller baru (
php artisan make:controller ItemController) dan sebuah View Blade untuk menampilkan semua item kepada pengunjung non-admin. - Validasi Lanjutan: Jelajahi aturan validasi Laravel yang lebih kompleks di dalam Filament Resource Anda.
- Eloquent Relationships:
- Buat model dan migrasi baru untuk
Category. - Buat hubungan one-to-many (satu Kategori memiliki banyak Item).
- Tampilkan pilihan kategori di form item Anda.
- Buat model dan migrasi baru untuk
- Autentikasi: Coba instal Laravel Breeze untuk menambahkan sistem login dan registrasi untuk pengguna biasa (bukan admin Filament).
- Tulis Tes: Pelajari cara menulis tes unit atau fitur untuk memastikan aplikasi Anda bekerja sesuai harapan.
Semoga dokumentasi ini membantu perjalanan belajar Anda! Jangan ragu untuk bereksperimen dan mengubah kode untuk melihat dampaknya. Selamat belajar!