Cara Bikin Admin dan Content Management System dengan Laravel Filament Projek Web Laundry

Saat kita membangun sebuah website untuk bisnis jasa laundry, tentu kita membutuhkan sebuah halaman admin dan content management system (CMS) yang memungkinkan kita untuk mengelola data seperti pesanan, pelanggan, layanan, hingga laporan keuangan.

Pada artikel ini, kita akan membahas cara membuat halaman admin beserta CMS pada projek website jasa laundry menggunakan Laravel dan Filament, tanpa masuk ke detail coding.

Laravel dan Filament: Kombinasi Tepat untuk Dashboard dan CMS

Laravel dikenal sebagai framework PHP yang populer karena kemudahan penggunaannya, fitur-fitur yang lengkap, dan keamanannya. Laravel juga memiliki banyak package dan ekosistem yang bisa membantu developer membangun aplikasi web dengan cepat dan efisien. Salah satu paket yang sering digunakan untuk membuat dashboard dan CMS adalah Filament.

Filament merupakan package untuk Laravel yang dirancang khusus untuk membangun interface admin yang modern, cepat, dan mudah dimaintenance. Dengan menggunakan Laravel dan Filament, kita bisa membuat dashboard dan CMS yang memiliki tampilan menarik, interaktif, dan fungsionalitas yang lengkap tanpa perlu banyak effort dalam coding.

Mengapa Laravel dan Filament Cocok untuk Projek Web Laundry?

  1. Keamanan Terjamin: Dalam website jasa laundry, kita akan menangani banyak data pelanggan dan transaksi. Laravel dilengkapi dengan fitur keamanan yang sangat baik seperti CSRF protection, session management, dan lain-lain yang membantu melindungi data dari akses yang tidak sah.
  2. Pengelolaan Data yang Mudah: Filament menyediakan banyak fitur bawaan seperti CRUD generator, data table yang interaktif, dan form builder yang memudahkan kita dalam mengelola data. Misalnya, kita bisa dengan mudah membuat form untuk menambahkan layanan laundry baru, melihat daftar pesanan, atau mengelola pelanggan tanpa perlu menulis banyak kode.
  3. User Interface yang Modern dan Responsif: Dashboard admin yang dibuat menggunakan Filament memiliki tampilan yang modern dan user-friendly. Hal ini penting karena administrator yang mengelola sistem perlu menggunakan interface yang mudah dipahami dan navigasi yang intuitif.
  4. Cepat dan Efisien: Laravel dan Filament memanfaatkan komponen frontend seperti Alpine.js dan Tailwind CSS yang membuat loading halaman menjadi cepat dan performa aplikasi lebih optimal. Ini sangat membantu ketika kita ingin memantau pesanan dan laporan secara real-time tanpa ada lag.
  5. Mudah Dimaintenance: Salah satu kelebihan menggunakan Laravel adalah struktur kodenya yang bersih dan rapi. Dengan tambahan Filament, maintenance dashboard dan CMS menjadi lebih mudah karena kita bisa dengan cepat menambahkan fitur baru atau memperbarui fungsionalitas yang ada tanpa merusak sistem yang sudah berjalan.

Analogi Sederhana

Bayangkan Anda memiliki sebuah toko laundry. Laravel adalah bangunan toko yang kuat, aman, dan siap untuk ditempati. Di dalamnya, ada berbagai ruang untuk menyimpan data, melakukan proses, dan menerima pelanggan. Namun, untuk membuat toko tersebut lebih efektif, Anda membutuhkan rak yang terorganisir, meja kasir yang modern, dan sistem manajemen stok yang canggih.

Di sinilah Filament berperan sebagai perabotan modern yang mengisi toko laundry Anda, menjadikan toko Anda tidak hanya kuat dan aman, tetapi juga nyaman untuk dikelola dan menarik bagi pelanggan.

Dengan kombinasi Laravel dan Filament, Anda bisa fokus mengelola bisnis tanpa harus khawatir dengan kerumitan teknis yang biasanya terjadi pada sistem manajemen konten dan halaman admin.

Tata Cara Membuat Projek Laravel Terbaru Menggunakan Composer dan Mengatur File .env untuk MySQL

Membangun projek Laravel terbaru bisa dimulai dengan menggunakan command line sederhana. Laravel menyediakan berbagai cara untuk menginstall framework ini, tetapi cara yang paling umum dan disarankan adalah menggunakan Composer, dependency manager untuk PHP. Setelah instalasi, kita perlu mengatur file .env agar Laravel dapat terhubung dengan database MySQL. Berikut ini adalah penjelasan langkah-langkahnya beserta contoh kode lengkap.

1. Instalasi Laravel Menggunakan Composer

Pastikan terlebih dahulu bahwa Composer sudah terinstall di komputer Anda. Jika belum, Anda bisa mengikuti panduan instalasi di Composer. Setelah Composer terinstall, buka terminal atau command prompt, lalu jalankan perintah berikut untuk membuat projek Laravel baru:

composer create-project --prefer-dist laravel/laravel nama-projek-anda

Perintah ini akan membuat sebuah folder projek baru dengan nama yang telah Anda tentukan (ganti nama-projek-anda dengan nama projek Anda). Laravel akan mengunduh semua file yang diperlukan dan mengatur struktur direktori projek secara otomatis.

2. Mengatur Koneksi Database di File .env

Setelah projek Laravel berhasil dibuat, langkah selanjutnya adalah mengatur koneksi database. Laravel menggunakan file .env yang berada di root directory projek untuk menyimpan konfigurasi lingkungan, termasuk konfigurasi database. Buka file .env tersebut menggunakan text editor pilihan Anda, dan temukan bagian berikut:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nama_database
DB_USERNAME=username_database
DB_PASSWORD=password_database

Ubah nilai-nilai pada variabel di atas sesuai dengan informasi koneksi MySQL yang Anda gunakan:

  • DB_CONNECTION: Jenis koneksi database yang digunakan. Secara default, Laravel menggunakan mysql.
  • DB_HOST: Alamat host database Anda, biasanya 127.0.0.1 atau localhost.
  • DB_PORT: Port yang digunakan oleh MySQL, biasanya 3306.
  • DB_DATABASE: Nama database yang akan digunakan oleh Laravel. Pastikan database ini sudah dibuat di MySQL.
  • DB_USERNAME: Username untuk mengakses database.
  • DB_PASSWORD: Password untuk mengakses database.

Contoh konfigurasi lengkap:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=projek_laundry
DB_USERNAME=root
DB_PASSWORD=

Dalam contoh ini, database yang digunakan bernama projek_laundry, dengan username root dan tanpa password. Pastikan untuk mengganti informasi ini sesuai dengan pengaturan MySQL Anda.

3. Membuat Database di MySQL

Sebelum menjalankan projek Laravel, pastikan database yang disebutkan di file .env sudah ada. Anda bisa membuatnya menggunakan command line atau tools seperti phpMyAdmin. Jika menggunakan command line, jalankan perintah berikut di terminal MySQL:

CREATE DATABASE projek_laundry;

Ini akan membuat database kosong dengan nama projek_laundry yang akan digunakan oleh Laravel.

4. Menjalankan Projek Laravel

Setelah konfigurasi database selesai, jalankan projek Laravel menggunakan perintah berikut di terminal:

php artisan serve

Perintah ini akan menjalankan server built-in Laravel di http://127.0.0.1:8000. Buka alamat tersebut di browser untuk melihat halaman default Laravel.

5. Menguji Koneksi Database

Untuk memastikan bahwa koneksi database sudah benar, kita bisa menjalankan migrasi bawaan Laravel yang akan membuat beberapa tabel default di database. Jalankan perintah berikut di terminal:

php artisan migrate

Jika tidak ada error, berarti Laravel sudah berhasil terhubung ke database dan membuat tabel-tabel yang diperlukan.

Tata Cara Membuat File Migration dan Model Beserta Fillable dan Relationship untuk Tabel Projek Kelas

Dalam membangun aplikasi Laravel, kita sering membutuhkan beberapa tabel untuk menyimpan data. Untuk proyek seperti website jasa laundry, kita bisa membuat beberapa tabel seperti categories, laundry_services, cities, dan transactions.

Setiap tabel memiliki hubungan (relationship) satu sama lain yang harus didefinisikan di dalam model. Berikut ini adalah langkah-langkah untuk membuat file migration dan model beserta fillable dan relationship untuk masing-masing tabel tersebut.

1. Membuat File Migration

Untuk membuat file migration, kita bisa menggunakan perintah artisan make:migration. Berikut adalah contoh perintah untuk membuat file migration untuk setiap tabel:

php artisan make:migration create_categories_table
php artisan make:migration create_laundry_services_table
php artisan make:migration create_cities_table
php artisan make:migration create_transactions_table

Setelah menjalankan perintah di atas, file migration akan dibuat di folder database/migrations. Setiap file tersebut berisi blueprint struktur tabel yang akan dibuat di database.

Contoh kode untuk file migration create_categories_table:

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

class CreateCategoriesTable extends Migration
{
    public function up()
    {
        Schema::create('categories', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('categories');
    }
}

Contoh kode untuk file migration create_laundry_services_table:

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

class CreateLaundryServicesTable extends Migration
{
    public function up()
    {
        Schema::create('laundry_services', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->unsignedBigInteger('category_id');
            $table->decimal('price', 8, 2);
            $table->timestamps();

            $table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade');
        });
    }

    public function down()
    {
        Schema::dropIfExists('laundry_services');
    }
}

Contoh kode untuk file migration create_cities_table:

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

class CreateCitiesTable extends Migration
{
    public function up()
    {
        Schema::create('cities', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('cities');
    }
}

Contoh kode untuk file migration create_transactions_table:

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

class CreateTransactionsTable extends Migration
{
    public function up()
    {
        Schema::create('transactions', function (Blueprint $table) {
            $table->id();
            $table->unsignedBigInteger('laundry_service_id');
            $table->unsignedBigInteger('city_id');
            $table->integer('quantity');
            $table->decimal('total_price', 10, 2);
            $table->timestamps();

            $table->foreign('laundry_service_id')->references('id')->on('laundry_services')->onDelete('cascade');
            $table->foreign('city_id')->references('id')->on('cities')->onDelete('cascade');
        });
    }

    public function down()
    {
        Schema::dropIfExists('transactions');
    }
}

2. Membuat Model Beserta Fillable dan Relationship

Setelah membuat file migration, langkah berikutnya adalah membuat model untuk setiap tabel yang sudah kita buat. Model digunakan untuk berinteraksi dengan tabel di database dan mendefinisikan relasi antar tabel.

Contoh kode untuk model Category:

namespace App\\\\Models;

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

class Category extends Model
{
    use HasFactory;

    protected $fillable = [
        'name',
    ];

    public function laundryServices()
    {
        return $this->hasMany(LaundryService::class);
    }
}

Pada model Category, terdapat relasi hasMany ke model LaundryService, yang berarti satu kategori dapat memiliki banyak layanan laundry.

Contoh kode untuk model LaundryService:

namespace App\\\\Models;

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

class LaundryService extends Model
{
    use HasFactory;

    protected $fillable = [
        'name',
        'category_id',
        'price',
    ];

    public function category()
    {
        return $this->belongsTo(Category::class);
    }

    public function transactions()
    {
        return $this->hasMany(Transaction::class);
    }
}

Pada model LaundryService, terdapat relasi belongsTo ke model Category dan hasMany ke model Transaction.

Contoh kode untuk model City:

namespace App\\\\Models;

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

class City extends Model
{
    use HasFactory;

    protected $fillable = [
        'name',
    ];

    public function transactions()
    {
        return $this->hasMany(Transaction::class);
    }
}

Pada model City, terdapat relasi hasMany ke model Transaction.

Contoh kode untuk model Transaction:

namespace App\\\\Models;

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

class Transaction extends Model
{
    use HasFactory;

    protected $fillable = [
        'laundry_service_id',
        'city_id',
        'quantity',
        'total_price',
    ];

    public function laundryService()
    {
        return $this->belongsTo(LaundryService::class);
    }

    public function city()
    {
        return $this->belongsTo(City::class);
    }
}

Pada model Transaction, terdapat relasi belongsTo ke model LaundryService dan belongsTo ke model City. Relasi ini menunjukkan bahwa setiap transaksi hanya dapat memiliki satu layanan laundry dan satu kota.

Dengan mengikuti langkah-langkah di atas, Anda telah berhasil membuat file migration dan model beserta fillable dan relationship untuk tabel categories, laundry_services, cities, dan transactions. Anda dapat melanjutkan dengan menjalankan perintah php artisan migrate untuk membuat tabel-tabel ini di database Anda.

Tata Cara Menginstall Package Filament dan Membuat Akun Admin

Filament adalah package Laravel yang memudahkan pembuatan dashboard admin dengan fitur CRUD yang interaktif dan user-friendly. Untuk menginstall package Filament dan membuat akun admin, berikut ini adalah langkah-langkahnya beserta contoh koding lengkap.

Menginstall Package Filament

Pastikan projek Laravel Anda sudah siap dan Composer telah terinstall di sistem Anda. Buka terminal di direktori projek Laravel Anda dan jalankan perintah berikut untuk menginstall Filament:

composer require filament/filament

Perintah ini akan mengunduh dan menginstall package Filament beserta dependensinya ke dalam projek Laravel Anda.

Setelah instalasi selesai, jalankan perintah berikut untuk mengatur Filament dan membuat beberapa file konfigurasi dasar yang diperlukan:

php artisan filament:install

Perintah ini akan melakukan beberapa hal, seperti menambahkan route dan file konfigurasi Filament, serta mempersiapkan projek Laravel Anda untuk menggunakan package ini.

Menambahkan Middleware Filament

Pastikan middleware Filament sudah terdaftar dalam file app/Http/Kernel.php di bagian $middlewareGroups. Ini memastikan bahwa route admin hanya bisa diakses oleh pengguna yang sudah terautentikasi.

protected $middlewareGroups = [
    'web' => [
        // Middleware default Laravel
    ],
    'filament' => [
        \\\\Filament\\\\Http\\\\Middleware\\\\Authenticate::class,
        \\\\Filament\\\\Http\\\\Middleware\\\\DispatchServingFilamentEvent::class,
        \\\\Filament\\\\Http\\\\Middleware\\\\ShareFilamentData::class,
    ],
];

Jika middleware ini belum ada, tambahkan ke dalam array filament seperti pada contoh di atas.

Membuat Akun Admin

Setelah Filament terinstall, langkah berikutnya adalah membuat akun admin yang dapat digunakan untuk login ke dashboard Filament. Jalankan perintah berikut untuk membuat user admin baru:

php artisan make:filament-user

Anda akan diminta untuk mengisi informasi user seperti nama, email, dan password. Contoh output perintah di terminal:

Name: Admin
Email: [email protected]
Password: ********

Setelah proses ini selesai, user admin baru akan dibuat dan dapat digunakan untuk login ke dashboard admin Filament.

Mengakses Dashboard Admin

Untuk mengakses dashboard admin Filament, buka browser dan pergi ke URL berikut:

<http://localhost:8000/admin>

Gantilah localhost:8000 dengan URL projek Laravel Anda jika berbeda. Gunakan email dan password yang telah dibuat pada langkah sebelumnya untuk login.

Menyesuaikan Configurasi Filament

Anda dapat mengatur beberapa konfigurasi tambahan untuk Filament, seperti nama aplikasi, URL login, dan sebagainya, di file config/filament.php. Contoh konfigurasi dasar:

return [
    'brand' => 'Laundry Admin',
    'path' => 'admin',
    'auth' => [
        'guard' => 'web',
    ],
    'resources' => [
        // Daftar resource yang terdaftar
    ],
];

Konfigurasi ini memungkinkan Anda untuk mengatur beberapa aspek visual dan fungsional dari dashboard admin Filament.

Dengan mengikuti langkah-langkah di atas, Anda telah berhasil menginstall package Filament dan membuat akun admin untuk mengakses dashboard admin. Anda bisa mulai menambahkan resource dan fitur lainnya ke dalam dashboard sesuai kebutuhan aplikasi Anda.

Tata Cara Membuat Resource untuk CRUD Seluruh Tabel dengan Filament

Setelah menginstall package Filament dan membuat akun admin, langkah berikutnya adalah membuat resource untuk CRUD (Create, Read, Update, Delete) pada tabel-tabel yang sudah ada, seperti categories, laundry_services, cities, dan transactions. Resource ini akan membantu mengatur dan menampilkan data dari tabel-tabel tersebut di dashboard admin Filament. Berikut adalah langkah-langkah beserta contoh koding lengkap untuk membuat resource CRUD tersebut.

Membuat Resource CRUD untuk Tabel Categories

Jalankan perintah berikut di terminal untuk membuat resource Filament untuk tabel categories:

php artisan make:filament-resource Category

Perintah ini akan membuat beberapa file resource yang berada di direktori app/Filament/Resources/CategoryResource. Berikut adalah contoh kode lengkap untuk file CategoryResource.php:

namespace App\\\\Filament\\\\Resources;

use App\\\\Filament\\\\Resources\\\\CategoryResource\\\\Pages;
use App\\\\Models\\\\Category;
use Filament\\\\Resources\\\\Resource;
use Filament\\\\Resources\\\\Table;
use Filament\\\\Resources\\\\Form;
use Filament\\\\Tables;
use Filament\\\\Forms;

class CategoryResource extends Resource
{
    protected static ?string $model = Category::class;
    protected static ?string $navigationIcon = 'heroicon-o-collection';
    protected static ?string $navigationGroup = 'Laundry Management';

    public static function form(Form $form): Form
    {
        return $form->schema([
            Forms\\\\Components\\\\TextInput::make('name')
                ->required()
                ->maxLength(255),
        ]);
    }

    public static function table(Table $table): Table
    {
        return $table->columns([
            Tables\\\\Columns\\\\TextColumn::make('id')->sortable(),
            Tables\\\\Columns\\\\TextColumn::make('name')->sortable()->searchable(),
            Tables\\\\Columns\\\\TextColumn::make('created_at')->dateTime(),
        ])->filters([
            //
        ])->actions([
            Tables\\\\Actions\\\\EditAction::make(),
        ])->bulkActions([
            Tables\\\\Actions\\\\DeleteBulkAction::make(),
        ]);
    }

    public static function getPages(): array
    {
        return [
            'index' => Pages\\\\ManageCategories::route('/'),
        ];
    }
}

File ini mengatur form dan tabel untuk resource Category. Bagian form menentukan schema form input yang digunakan untuk menambah dan mengedit data, sedangkan bagian table mengatur kolom apa saja yang akan ditampilkan di tabel, serta actions dan bulk actions yang tersedia.

Membuat Resource CRUD untuk Tabel LaundryServices

Jalankan perintah berikut untuk membuat resource Filament untuk tabel laundry_services:

php artisan make:filament-resource LaundryService

Berikut adalah contoh kode lengkap untuk file LaundryServiceResource.php:

namespace App\\\\Filament\\\\Resources;

use App\\\\Filament\\\\Resources\\\\LaundryServiceResource\\\\Pages;
use App\\\\Models\\\\LaundryService;
use Filament\\\\Resources\\\\Resource;
use Filament\\\\Resources\\\\Table;
use Filament\\\\Resources\\\\Form;
use Filament\\\\Tables;
use Filament\\\\Forms;

class LaundryServiceResource extends Resource
{
    protected static ?string $model = LaundryService::class;
    protected static ?string $navigationIcon = 'heroicon-o-collection';
    protected static ?string $navigationGroup = 'Laundry Management';

    public static function form(Form $form): Form
    {
        return $form->schema([
            Forms\\\\Components\\\\TextInput::make('name')
                ->required()
                ->maxLength(255),
            Forms\\\\Components\\\\Select::make('category_id')
                ->relationship('category', 'name')
                ->required(),
            Forms\\\\Components\\\\TextInput::make('price')
                ->required()
                ->numeric(),
        ]);
    }

    public static function table(Table $table): Table
    {
        return $table->columns([
            Tables\\\\Columns\\\\TextColumn::make('id')->sortable(),
            Tables\\\\Columns\\\\TextColumn::make('name')->sortable()->searchable(),
            Tables\\\\Columns\\\\TextColumn::make('category.name')->sortable()->searchable(),
            Tables\\\\Columns\\\\TextColumn::make('price')->sortable(),
            Tables\\\\Columns\\\\TextColumn::make('created_at')->dateTime(),
        ])->filters([
            //
        ])->actions([
            Tables\\\\Actions\\\\EditAction::make(),
        ])->bulkActions([
            Tables\\\\Actions\\\\DeleteBulkAction::make(),
        ]);
    }

    public static function getPages(): array
    {
        return [
            'index' => Pages\\\\ManageLaundryServices::route('/'),
        ];
    }
}

Bagian form pada resource ini memiliki input untuk name, category_id (yang menggunakan relationship), dan price. Pada bagian table, kolom category.name digunakan untuk menampilkan nama kategori layanan laundry.

Membuat Resource CRUD untuk Tabel Cities

Untuk membuat resource Filament pada tabel cities, jalankan perintah berikut:

php artisan make:filament-resource City

Berikut adalah contoh kode lengkap untuk file CityResource.php:

namespace App\\\\Filament\\\\Resources;

use App\\\\Filament\\\\Resources\\\\CityResource\\\\Pages;
use App\\\\Models\\\\City;
use Filament\\\\Resources\\\\Resource;
use Filament\\\\Resources\\\\Table;
use Filament\\\\Resources\\\\Form;
use Filament\\\\Tables;
use Filament\\\\Forms;

class CityResource extends Resource
{
    protected static ?string $model = City::class;
    protected static ?string $navigationIcon = 'heroicon-o-collection';
    protected static ?string $navigationGroup = 'Location Management';

    public static function form(Form $form): Form
    {
        return $form->schema([
            Forms\\\\Components\\\\TextInput::make('name')
                ->required()
                ->maxLength(255),
        ]);
    }

    public static function table(Table $table): Table
    {
        return $table->columns([
            Tables\\\\Columns\\\\TextColumn::make('id')->sortable(),
            Tables\\\\Columns\\\\TextColumn::make('name')->sortable()->searchable(),
            Tables\\\\Columns\\\\TextColumn::make('created_at')->dateTime(),
        ])->filters([
            //
        ])->actions([
            Tables\\\\Actions\\\\EditAction::make(),
        ])->bulkActions([
            Tables\\\\Actions\\\\DeleteBulkAction::make(),
        ]);
    }

    public static function getPages(): array
    {
        return [
            'index' => Pages\\\\ManageCities::route('/'),
        ];
    }
}

Resource ini hanya memiliki satu input name di dalam form schema, karena tabel cities hanya menyimpan nama kota.

Membuat Resource CRUD untuk Tabel Transactions

Jalankan perintah berikut untuk membuat resource Filament untuk tabel transactions:

php artisan make:filament-resource Transaction

Berikut adalah contoh kode lengkap untuk file TransactionResource.php:

namespace App\\\\Filament\\\\Resources;

use App\\\\Filament\\\\Resources\\\\TransactionResource\\\\Pages;
use App\\\\Models\\\\Transaction;
use Filament\\\\Resources\\\\Resource;
use Filament\\\\Resources\\\\Table;
use Filament\\\\Resources\\\\Form;
use Filament\\\\Tables;
use Filament\\\\Forms;

class TransactionResource extends Resource
{
    protected static ?string $model = Transaction::class;
    protected static ?string $navigationIcon = 'heroicon-o-collection';
    protected static ?string $navigationGroup = 'Order Management';

    public static function form(Form $form): Form
    {
        return $form->schema([
            Forms\\\\Components\\\\Select::make('laundry_service_id')
                ->relationship('laundryService', 'name')
                ->required(),
            Forms\\\\Components\\\\Select::make('city_id')
                ->relationship('city', 'name')
                ->required(),
            Forms\\\\Components\\\\TextInput::make('quantity')
                ->required()
                ->numeric(),
            Forms\\\\Components\\\\TextInput::make('total_price')
                ->required()
                ->numeric(),
        ]);
    }

    public static function table(Table $table): Table
    {
        return $table->columns([
            Tables\\\\Columns\\\\TextColumn::make('id')->sortable(),
            Tables\\\\Columns\\\\TextColumn::make('laundryService.name')->sortable()->searchable(),
            Tables\\\\Columns\\\\TextColumn::make('city.name')->sortable()->searchable(),
            Tables\\\\Columns\\\\TextColumn::make('quantity')->sortable(),
            Tables\\\\Columns\\\\TextColumn::make('total_price')->sortable(),
            Tables\\\\Columns\\\\TextColumn::make('created_at')->dateTime(),
        ])->filters([
            //
        ])->actions([
            Tables\\\\Actions\\\\EditAction::make(),
        ])->bulkActions([
            Tables\\\\Actions\\\\DeleteBulkAction::make(),
        ]);
    }

    public static function getPages(): array
    {
        return [
            'index' => Pages\\\\ManageTransactions::route('/'),
        ];
    }
}

Resource ini mengatur form schema dengan input laundry_service_id dan city_id yang menggunakan relationship, serta quantity dan total_price. Pada bagian table, nama layanan laundry dan kota ditampilkan melalui relasi.

Dengan mengikuti langkah-langkah di atas, resource CRUD untuk setiap tabel telah berhasil dibuat. Resource ini memungkinkan kita untuk mengelola data dari tabel categories, laundry_services, cities, dan transactions langsung dari dashboard admin Filament. Anda bisa menyesuaikan resource ini sesuai dengan kebutuhan projek Anda.

Penutup dan Kesimpulan

Dengan menggunakan Laravel dan Filament, kita dapat membangun sistem manajemen konten yang kuat dan fleksibel untuk berbagai jenis aplikasi, termasuk website jasa laundry. Filament memungkinkan pembuatan dashboard admin yang interaktif dengan fitur CRUD yang lengkap dan mudah digunakan tanpa harus menulis banyak kode dari awal.

Dalam artikel ini, kita telah membahas langkah-langkah untuk menginstall Filament, membuat akun admin, serta membuat resource CRUD untuk tabel categories, laundry_services, cities, dan transactions.

Menggunakan kombinasi Laravel dan Filament memberikan banyak keuntungan, seperti kemudahan dalam pengelolaan data, tampilan antarmuka yang modern, serta keamanan yang baik. Proses ini tidak hanya mempercepat pembangunan aplikasi, tetapi juga memudahkan maintenance dan pengembangan lebih lanjut.

Laravel terus berkembang dan menjadi pilihan utama bagi banyak developer karena berbagai pembaruan menarik yang selalu memudahkan proses pengembangan aplikasi. Dengan komunitas yang aktif dan dokumentasi yang lengkap, framework ini menawarkan solusi yang efisien dan efektif untuk membangun aplikasi web yang aman, cepat, dan scalable.

Jika Anda ingin terus mengikuti perkembangan terbaru Laravel dan belajar dari studi kasus nyata, pantau terus website BuildWithAngga. Mereka secara rutin mengupdate kelas-kelas gratis yang dilengkapi dengan studi kasus menarik, dipandu oleh mentor berpengalaman.

Selain itu, Anda akan mendapatkan akses seumur hidup untuk setiap kelas yang diikuti, memungkinkan Anda untuk belajar kapan saja dan di mana saja.

Jangan lewatkan kesempatan untuk terus mengasah kemampuan Anda bersama komunitas yang solid dan sumber belajar yang berkualitas. Selamat belajar dan tetap semangat dalam mengembangkan proyek Anda!