Category: Tutorial

  • Invokable Controller di Laravel: Cara Kerja, Contoh Kode, dan Kapan Memakainya

    Invokable Controller di Laravel: Cara Kerja, Contoh Kode, dan Kapan Memakainya

    Ada satu fitur Laravel yang sering dilewatkan developer pemula: invokable controller. Padahal kalau dipakai di tempat yang tepat, kode jadi lebih bersih dan lebih mudah dibaca.

    Artikel ini menjelaskan apa itu invokable controller, kapan sebaiknya dipakai, dan bagaimana cara implementasinya di Laravel 12.

    Apa Itu Invokable Controller?

    Invokable controller adalah controller yang hanya punya satu method: __invoke(). Karena hanya ada satu aksi, Anda tidak perlu menyebutkan nama method saat mendaftarkan route.

    Ini berbeda dengan controller biasa yang bisa punya banyak method seperti index(), store(), update(), dll.

    Buat invokable controller lewat Artisan:

    php artisan make:controller ShowDashboardController --invokable

    Hasilnya:

    <?php
    
    namespace AppHttpControllers;
    
    use IlluminateHttpRequest;
    
    class ShowDashboardController extends Controller
    {
        public function __invoke(Request $request)
        {
            //
        }
    }

    Cara Mendaftarkan ke Route

    Karena hanya ada satu aksi, cara daftarkan ke route cukup langsung pakai nama class-nya:

    use AppHttpControllersShowDashboardController;
    
    Route::get('/dashboard', ShowDashboardController::class);

    Bandingkan dengan controller biasa yang harus sebut method-nya:

    Route::get('/dashboard', [DashboardController::class, 'index']);

    Lebih ringkas, dan route-nya lebih mudah dibaca, terutama kalau ada banyak route.

    Contoh Kasus Nyata

    Misalnya Anda punya halaman yang menampilkan laporan bulanan. Logikanya spesifik untuk satu tujuan, tidak perlu dibagi ke beberapa method:

    <?php
    
    namespace AppHttpControllersReports;
    
    use IlluminateHttpRequest;
    use AppHttpControllersController;
    use AppModelsOrder;
    
    class MonthlyReportController extends Controller
    {
        public function __invoke(Request $request)
        {
            $month = $request->query('month', now()->month);
            $year  = $request->query('year', now()->year);
    
            $orders = Order::whereMonth('created_at', $month)
                           ->whereYear('created_at', $year)
                           ->with('customer')
                           ->get();
    
            return view('reports.monthly', compact('orders', 'month', 'year'));
        }
    }

    Route-nya:

    Route::get('/reports/monthly', MonthlyReportController::class)
         ->middleware('auth')
         ->name('reports.monthly');

    Rapi. Satu controller, satu tujuan.

    Kapan Pakai Invokable Controller?

    Invokable controller cocok untuk:

    • Halaman yang hanya punya satu aksi (tampil laporan, proses webhook, generate PDF)
    • Action handler — satu action spesifik yang tidak perlu dibundel dengan aksi lain
    • Single-purpose endpoint yang ingin dipisah dari controller utama agar tidak membesar

    Tidak cocok untuk resource yang punya banyak aksi CRUD. Untuk itu tetap pakai resource controller biasa.

    Dependency Injection di Invokable Controller

    Sama seperti controller biasa, Anda bisa inject service lewat constructor atau langsung di method __invoke():

    <?php
    
    namespace AppHttpControllers;
    
    use AppServicesInvoiceService;
    use IlluminateHttpRequest;
    
    class GenerateInvoiceController extends Controller
    {
        public function __construct(
            private InvoiceService $invoiceService
        ) {}
    
        public function __invoke(Request $request)
        {
            $validated = $request->validate([
                'order_id' => 'required|exists:orders,id',
            ]);
    
            $pdf = $this->invoiceService->generate($validated['order_id']);
    
            return response()->download($pdf);
        }
    }

    Baca Juga

    Kalau Anda butuh tim untuk membangun aplikasi web berbasis Laravel, dari arsitektur sampai deployment — lihat layanan pengembangan aplikasi kami.

  • Cara Install Laravel 12: Panduan Lengkap dari Instalasi sampai Project Jalan

    Cara Install Laravel 12: Panduan Lengkap dari Instalasi sampai Project Jalan

    Kamu baru mau mulai belajar Laravel 12 atau mau memulai project baru? Artikel ini memandu instalasi dari nol, mulai dari kebutuhan sistem, instalasi Laravel, sampai project pertama bisa jalan di browser.

    Tidak ada yang dilewati. Setiap perintah dijelaskan kenapa dijalankan, bukan sekadar disalin.

    Kebutuhan Sistem Sebelum Mulai

    Pastikan versi PHP dan tools berikut sudah terpasang:

    • PHP 8.2 atau lebih baru — Laravel 12 butuh minimal PHP 8.2
    • Composer — package manager PHP, download di getcomposer.org
    • Node.js + npm — untuk kompilasi asset frontend (Vite)
    • Database — MySQL, PostgreSQL, atau SQLite

    Cek versi PHP kamu:

    php --version
    # Harus menampilkan: PHP 8.2.x atau lebih baru

    Instalasi Laravel 12 via Composer

    Ada dua cara: lewat Laravel Installer atau langsung via Composer. Cara kedua lebih universal:

    composer create-project laravel/laravel nama-project "12.*"
    cd nama-project

    Kalau mau pakai Laravel Installer (lebih cepat untuk project berikutnya):

    # Install Laravel Installer sekali saja
    composer global require laravel/installer
    
    # Buat project baru
    laravel new nama-project --using=laravel/12.x

    Konfigurasi File .env

    Setelah project dibuat, buka file .env di root project. Ini konfigurasi yang perlu diubah minimal:

    APP_NAME=NamaAppKamu
    APP_ENV=local
    APP_KEY=                  # Akan diisi otomatis
    APP_DEBUG=true
    APP_URL=http://localhost
    
    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=nama_database
    DB_USERNAME=root
    DB_PASSWORD=***
    
    

    Generate application key: wajib dilakukan sekali saat setup:

    php artisan key:generate

    Perintah ini mengisi nilai APP_KEY di file .env secara otomatis. Key ini dipakai Laravel untuk enkripsi session dan cookie.

    Menjalankan Migration

    Laravel sudah menyertakan beberapa migration default (tabel users, sessions, cache, jobs). Jalankan semuanya sekaligus:

    php artisan migrate

    Kalau muncul error koneksi database, pastikan database yang kamu tulis di .env sudah dibuat terlebih dahulu:

    # Di MySQL
    CREATE DATABASE nama_database;

    Jalankan Development Server

    Laravel punya built-in development server lewat Artisan:

    php artisan serve
    # Akses di: http://127.0.0.1:8000

    Atau kalau kamu pakai Vite untuk frontend (default di Laravel 12), jalankan keduanya di terminal berbeda:

    # Terminal 1
    php artisan serve
    
    # Terminal 2
    npm install
    npm run dev

    Struktur Folder yang Perlu Kamu Kenali

    Tidak perlu hafal semua folder sekaligus. Ini yang paling sering dipakai:

    app/
      Http/
        Controllers/    ← semua controller ada di sini
        Middleware/     ← middleware request
      Models/           ← Eloquent models
    config/             ← konfigurasi aplikasi
    database/
      migrations/       ← file migration tabel
    routes/
      web.php           ← route untuk halaman web
      api.php           ← route untuk API
    resources/
      views/            ← file Blade (template HTML)

    Verifikasi Instalasi Berhasil

    Buka http://127.0.0.1:8000 di browser. Kalau muncul halaman welcome Laravel dengan versi Laravel 12, instalasi berhasil.

    Cek juga via Artisan:

    php artisan --version
    # Laravel Framework 12.x.x

    Langkah Berikutnya

    Setelah instalasi selesai, langkah selanjutnya:

    Kalau kamu sedang membangun project Laravel untuk client atau kebutuhan bisnis dan butuh tim yang berpengalaman, lihat layanan pengembangan aplikasi kami.


    Baca Juga

  • Cara Install Laravel 11 untuk Pemula: Composer, Setup & Error Umum

    Cara Install Laravel 11 untuk Pemula: Composer, Setup & Error Umum

    Cara install Laravel 11 termasuk topik yang paling banyak dicari oleh developer PHP yang baru mulai belajar framework modern. Laravel 11, yang dirilis resmi pada Maret 2024, membawa beberapa perubahan struktural signifikan dibanding versi sebelumnya — terutama penghapusan beberapa file konfigurasi default dan penyederhanaan direktori app/. Panduan ini dirancang khusus untuk pemula yang baru pertama kali menginstal Laravel, maupun developer berpengalaman yang ingin memahami apa yang berubah dari Laravel 10 ke Laravel 11.

    Sebelum mulai, pastikan Anda sudah memiliki PHP 8.2+ dan Composer terinstal. Jika belum, panduan ini juga mencakup langkah persiapan tersebut.

    Kebutuhan Sistem untuk Laravel 11

    Sebelum mulai, pastikan lingkungan development Anda memenuhi persyaratan minimum. Minimal PHP 8.1 ke atas diperlukan untuk menjalankan Laravel 11, disertai ekstensi PHP yang umum seperti OpenSSL, PDO, BCMath, JSON, dan mbstring. Sistem operasi bisa Linux, macOS, atau Windows (melalui WSL jika Anda menggunakan Windows). Selain itu, pastikan Anda memiliki akses internet stabil karena proses instalasi akan mengambil dependensi lewat Composer. Untuk referensi resmi tentang kebutuhan lingkungan, baca Dokumentasi Resmi Laravel 11.

    Perangkat Lunak yang Diperlukan

    Langkah berikutnya adalah memastikan Composer terinstal dengan benar, karena Laravel 11 dibangun di atas ekosistem PHP yang memanfaatkan Composer untuk manajemen dependensi. Selain itu, Node.js direkomendasikan jika Anda ingin mengelola assets front-end dengan alat seperti Vite.

    Cara Install Laravel 11

    1. Install PHP dan Ekstensi yang Diperlukan

    Pastikan PHP telah terpasang pada sistem Anda. Anda bisa memeriksa versi PHP dengan perintah berikut:

    php -v

    Pastikan setidaknya PHP 8.1 terpasang. Jika belum, instal versi terbaru sesuai sistem operasi Anda dan pastikan ekstensi penting seperti OpenSSL, PDO, dan mbstring telah aktif di php.ini.

    2. Install Composer

    Composer adalah package manager PHP yang wajib ada sebelum menginstal Laravel. Download dan install dari getcomposer.org, lalu verifikasi dengan:

    composer --version

    3. Buat Project Laravel 11 via Composer

    Setelah PHP dan Composer siap, jalankan perintah berikut untuk membuat project Laravel 11 baru:

    composer create-project --prefer-dist laravel/laravel nama-project "11.*"

    Atau, jika ingin menggunakan Laravel installer:

    composer global require laravel/installer
    laravel new nama-project

    Proses ini akan mengunduh Laravel 11 beserta semua dependensinya. Tunggu hingga selesai.

    4. Generate Application Key

    Masuk ke direktori project dan generate APP_KEY:

    cd nama-project
    php artisan key:generate

    Apa yang Berubah di Laravel 11 Dibanding Laravel 10

    Laravel 11 membawa perubahan struktural yang cukup signifikan:

    • Direktori app/ lebih ramping — banyak file provider dan middleware yang sebelumnya ada di sini dipindahkan atau dihapus
    • Tidak ada app/Http/Kernel.php — middleware sekarang di-register via bootstrap/app.php
    • Service Provider lebih sedikit — hanya AppServiceProvider yang tersisa secara default
    • File konfigurasi banyak dihilangkan dari root — dipindahkan ke dalam framework itu sendiri
    • Dukungan SQLite bawaan — database default berubah ke SQLite untuk kemudahan development lokal

    Setup Awal Setelah Instalasi

    Konfigurasi File .env

    Salin file contoh .env untuk membuat konfigurasi lingkungan lokal:

    cp .env.example .env

    Selanjutnya, sesuaikan pengaturan database dan aplikasi Anda. Contoh pengaturan untuk MySQL:

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

    Jalankan Migrasi Database

    php artisan migrate

    Jalankan Development Server

    Untuk melihat proyek Laravel 11 Anda secara langsung, jalankan development server:

    php artisan serve

    Server akan berjalan di http://localhost:8000. Buka di browser untuk memastikan instalasi berhasil.

    Upgrade ke Laravel 12?

    Jika Anda sudah menguasai Laravel 11 dan ingin bermigrasi ke Laravel 12, prosesnya relatif mulus karena kedua versi berbagi arsitektur yang sama. Baca panduan resmi di Laravel Upgrade Guide untuk langkah-langkah detail.

    Troubleshooting: Error Umum Saat Install Laravel 11

    Error: PHP version mismatch

    Jika muncul error “Your PHP version does not satisfy the requirements”, pastikan PHP Anda minimal versi 8.1. Cek dengan php -v dan upgrade jika perlu.

    Error: php artisan not found / command not found

    Pastikan Anda sudah masuk ke direktori project (cd nama-project) sebelum menjalankan perintah php artisan.

    Error: Composer require timeout

    Jika proses composer create-project gagal karena timeout, coba tambahkan flag --prefer-dist atau gunakan mirror Packagist yang lebih dekat. Anda juga bisa meningkatkan timeout Composer:

    composer config --global process-timeout 600

    Error: 500 Internal Server Error setelah install

    Kemungkinan penyebab: file .env belum di-copy dari .env.example, atau APP_KEY belum di-generate. Jalankan:

    cp .env.example .env
    php artisan key:generate

    Error: Permission denied pada folder storage

    Laravel membutuhkan akses tulis pada folder storage/ dan bootstrap/cache/. Jalankan:

    chmod -R 775 storage bootstrap/cache

    FAQ: Pertanyaan Umum tentang Instalasi Laravel 11

    Apakah Laravel 11 bisa diinstall di Windows?

    Bisa, tapi direkomendasikan menggunakan WSL (Windows Subsystem for Linux) untuk pengalaman development yang lebih mulus. Anda bisa menggunakan XAMPP atau Laragon sebagai alternatif jika tidak ingin menggunakan WSL.

    Apa perbedaan composer create-project dan Laravel installer?

    composer create-project mengunduh Laravel langsung dari Packagist — cocok untuk semua lingkungan. Laravel installer (laravel new) adalah shortcut resmi yang lebih cepat dan mendukung opsi starter kits. Keduanya menghasilkan project yang identik.

    Bagaimana cara download Laravel 11 tanpa Composer?

    Composer adalah cara resmi dan yang direkomendasikan. Jika tidak memiliki Composer, Anda bisa mengunduh zip source dari GitHub Laravel Releases, tapi Anda tetap perlu menjalankan composer install setelahnya untuk mengunduh dependensinya.

    Berapa besar ukuran project Laravel 11 setelah install?

    Project dasar Laravel 11 setelah composer install biasanya berukuran sekitar 30–50MB termasuk folder vendor/. Tanpa folder vendor (untuk deploy via Composer), ukurannya jauh lebih kecil.

    Apakah Laravel 11 membutuhkan Node.js?

    Node.js tidak wajib untuk menjalankan Laravel, tapi dibutuhkan jika Anda ingin menggunakan Vite untuk kompilasi asset frontend. Untuk aplikasi tanpa frontend build process, Node.js bisa diabaikan.

    Ingin Langsung Membangun Aplikasi Web?

    Memahami cara install Laravel 11 adalah langkah awal yang baik. Tapi membangun aplikasi web yang siap dipakai di production — lengkap dengan database, autentikasi, dashboard, dan deployment — membutuhkan pengalaman lebih. Jika Anda memiliki ide aplikasi atau website yang ingin diwujudkan, tim Arrazy Inovasi siap membantu membangun website profesional yang terstruktur dan scalable.

    Konsultasikan kebutuhan Anda terlebih dahulu — tidak ada biaya untuk diskusi awal. Hubungi kami di sini.