Membuat Controller Pada Laravel

Jika Anda pernah mendengan konsep MVC atau Model View Controller, maka Anda sedang berada posisi yang tepat karena sedang belajar controller saat ini. Controller digunakan untuk mengendalikan antara model dan view, tetapi saya akan menjelasankan kepada Anda tentang controller terlebih dahulu. Semua berkas controller akan disematkan dalam direktori app/Http/Controllers, Anda bisa menambahkan nama direktori didalam direktori tersebut seperti General, Manage, Client, API, atau semisalnya.

Daftar isi:

Controller sederhana

Membuat berkas controller

Cara membuat controller di Laravel cukuplah mudah dengan menjalankan perintah artisan pada terminal seperti dibawah ini:

php artisan make:controller SalamController

membuat controller

Contoh controller

Saya memberikan contoh Single Action Controllers maka memerlukan Magic Methods __invoke() PHP. Berikut controhnya:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class SalamController extends Controller
{
    public function __invoke()
    {
        return 'Halo semuanya!';
    }
}

Memanggil controller di routing

Semenjak Laravel 8 Ada harus memanggil kelas controller dengan memberikan jalur namespace, saya sendiri merasa kerepotan dengan cara seperti ini. Berikut contohnya:

use App\Http\Controllers\SalamController;

Route::get('salam', SalamController::class);

Tips mudah memanggil controller di routing

Mungkin cara sebelumnya cukup membuat Anda menjadi malas, maka cara ini menjadi alasan utama agar memanggil kelas controller tanpa perlu memberikan jalur namespace. Berikut caranya:

  1. Silakan masuk ke berkas App\Providers\RouteServiceProvider.php,
  2. Hilangkan komentar (//) pada variabel $namespace, dan
  3. Kemudian Anda bisa membuat routing menjadi Route::get('salam', 'SalamController');.

Catatan: Secara pribadi saya lebih suka cara seperti ini, daripada cara sebelumnya. Hingga saat ini saya belum tahu dampak dari penggunaan tersebut. Saya akan kabari Anda disini hingga versi Laravel selanjutnya, bila ada perubahan dengan cara tersebut.

Memanfaatkan resources controller

Cara membuat controller dan routing satu-persatu mungkin bukan cara yang baik, tetapi di Laravel semuanya sudah dipersiapkan dengan mudah. Jadi, resource controller memungkinkan sebuah controller dan routing menerapkan rute CRUD dengan pengontrol satu baris kode.

Membuat resouces controller

Cara membuatnya masih sama dengan cara sebelumnya, hanya saja dengan menambahkan --resouce diakhir perintah artisan. Berikut contohnya:

php artisan make:controller SalamController --resource

membuat controller

Selanjutnya Anda bisa mendaftarkan ke dalam routing Anda, seperti berikut:

Route::resource('salam', SalamController::class);

Perlu diketahui, menggunakan resource controller akan membuat rute dan nama rute dibuat secara otomatis. Jadi Anda tidak perlu repot membuatnya secara manual dan satu-persatu. Agar Anda bisa melihat semua rute yang Anda buat, cukup menjalankan perintah artisan dibawah ini dan fungsinya untuk melihat semua rute yang didaftarkan.

php artisan route:list

Silakan lihat gambar dibawah ini:

daftar rute

Ambil sebagian rute

Jika Anda sedang menggunakan resource controller suatu saat Anda akan memikirkan bagaimana cara mendaftar rute sebagian saja dalam satu resource, misalnya Anda hanya ingin mendaftarkan index, show, dan destroy.

Contoh penggunakan only

Menggunakan only akan mendaftar rute berdasarkan permintaan rute yang Anda buat, seperti contoh berikut:

Route::resource('salam', SalamController::class)->only([
    'index', 'show', 'destroy'
]);

Contoh penggunakan except

Sedangkan menggunakan except akan mengecualikan resource yang didaftarkan, seperti contoh berikut:

Route::resource('salam', SalamController::class)->except([
    'create', 'store', 'update'
]);

Catatan: Silakan Anda coba contoh diatas dengan perintah artisan untuk melihat semua rute yang terdaftar. Sebagaimana yang salah telah jelaskan caranya diatas.

Sumber: Docs Laravel