Membuat controller di Laravel 11 merupakan salah satu langkah penting dalam pengembangan aplikasi berbasis framework Laravel. Controller di Laravel membantu mengorganisir logika aplikasi dengan cara yang rapi dan terstruktur. Dalam artikel ini, kita akan membahas secara lengkap tentang cara membuat controller di Laravel 11, serta berbagai konsep terkait yang perlu Anda pahami untuk memaksimalkan penggunaannya dalam aplikasi Anda.
Artikel ini adalah artikel lanjutannya dari seri belajar laravel. kamu bisa membaca artikel pendahulu untuk menambah pengetahuanmu
- Belajar Laravel; Apa Itu Laravel?
- Belajar Laravel; Memahami Struktur Folder Laravel 11
- Belajar Laravel; Cara Install Laravel 11 di Windows, macOS, dan Linux
Kamu juga wajib memahami apa itu artisan, kamu dapat membaca dari artikel Belajar Laravel – Mengenal Artisan Laravel
Table of Contents
ToggleApa Itu Controller Laravel?
Controller di Laravel adalah komponen yang mengatur logika aplikasi. Controller berfungsi sebagai jembatan antara model (data) dan view (antarmuka pengguna), sehingga membantu memisahkan logika bisnis dari presentasi data.
Contoh sederhananya, jika Anda ingin menampilkan data pengguna di halaman tertentu, Controller bertugas mengambil data dari database (melalui model) dan mengirimkannya ke view untuk ditampilkan.
Jenis Controller di Laravel
Laravel mendukung beberapa jenis Controller, seperti:
- Controller Standar: Mengelola logika sederhana.
- Resource Controller: Mengelola operasi CRUD (Create, Read, Update, Delete).
- API Controller: Digunakan untuk API dengan resource CRUD yang dioptimalkan.
- Invokable Controller: Controller dengan satu metode
__invoke
.
Cara Membuat Controller di Laravel 11
Berikut adalah panduan untuk membuat Controller di Laravel:
1. Membuat Controller Standar
Untuk membuat Controller standar, gunakan perintah Artisan berikut:
php artisan make:controller NamaController
Contoh: Membuat Controller bernama UserController
:
php artisan make:controller UserController
Setelah perintah dijalankan, file UserController.php
akan dibuat di direktori app/Http/Controllers
.
Kode Awal UserController
:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController extends Controller
{
//
}
2. Membuat Resource Controller
Resource Controller digunakan untuk operasi CRUD. Laravel otomatis membuat metode seperti index
, create
, store
, show
, edit
, update
, dan destroy
.
Gunakan perintah berikut:
php artisan make:controller NamaController --resource
Contoh: Membuat Resource Controller bernama ProductController
:
php artisan make:controller ProductController --resource
Kode Awal ProductController
:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ProductController extends Controller
{
public function index()
{
// Tampilkan daftar produk
}
public function create()
{
// Tampilkan form tambah produk
}
public function store(Request $request)
{
// Simpan produk ke database
}
public function show($id)
{
// Tampilkan detail produk
}
public function edit($id)
{
// Tampilkan form edit produk
}
public function update(Request $request, $id)
{
// Perbarui produk di database
}
public function destroy($id)
{
// Hapus produk dari database
}
}
3. Membuat API Controller
Untuk membuat Controller yang digunakan dalam API, tambahkan flag --api
:
php artisan make:controller NamaController --api
API Controller tidak menyertakan metode create
dan edit
, karena API biasanya tidak memerlukan tampilan form.
4. Membuat Invokable Controller
Invokable Controller adalah Controller dengan satu metode __invoke
. Cocok untuk logika yang hanya memerlukan satu tindakan.
kamu dapat memahami lebih dalam tentang invokable controller dari artikel Pengertian Invokable Controller di Laravel: Penggunaan dan Kapan Harus Digunakan
Gunakan perintah berikut:
php artisan make:controller NamaController --invokable
Contoh: Membuat Invokable Controller bernama SendEmailController
:
php artisan make:controller SendEmailController --invokable
Kode Awal SendEmailController
:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class SendEmailController extends Controller
{
public function __invoke(Request $request)
{
// Logika pengiriman email
}
}
Menghubungkan Controller dengan Route
Setelah Controller dibuat, langkah berikutnya adalah menghubungkannya dengan route.
1. Route untuk Controller Standar
Tambahkan route di file routes/web.php
:
use App\Http\Controllers\UserController;
Route::get('/users', [UserController::class, 'index']);
Route::get('/users/create', [UserController::class, 'create']);
2. Route untuk Resource Controller
Gunakan metode resource
untuk mendaftarkan semua route CRUD:
use App\Http\Controllers\ProductController;
Route::resource('products', ProductController::class);
3. Route untuk Invokable Controller
Invokable Controller hanya membutuhkan satu route:
use App\Http\Controllers\SendEmailController;
Route::post('/send-email', SendEmailController::class);
4. Route untuk API
Gunakan apiResource
untuk API Controller:
use App\Http\Controllers\ProductController;
Route::apiResource('products', ProductController::class);
Tips dan Praktik Terbaik untuk Controller Laravel
- Gunakan Resource Controller untuk CRUD
Memanfaatkan Resource Controller membantu menjaga kode tetap terstruktur. - Pecah Logika Bisnis ke Service atau Repository
Jangan letakkan logika kompleks langsung di Controller. Gunakan Service atau Repository. - Gunakan Middleware
Terapkan Middleware untuk pengelolaan akses dan autentikasi pada Controller berikut contoh code untuk menerapkan auth pada middleware:
public function __construct()
{
$this->middleware('auth');
}
4. Manfaatkan Dependency Injection
Laravel mendukung Dependency Injection untuk menyederhanakan pengelolaan dependensi:
public function store(Request $request, UserService $userService)
{
$userService->create($request->all());
}
Kesimpulan
Membuat Controller di Laravel adalah langkah penting dalam pengembangan aplikasi web. Dengan memahami berbagai jenis Controller seperti standar, resource, API, dan invokable, Anda dapat dengan mudah mengelola logika aplikasi sesuai kebutuhan.
Jika Anda ingin membangun aplikasi web profesional atau membutuhkan jasa pengembangan web, aplikasi sistem, atau optimasi SEO, Arrazy Inovasi siap membantu Anda. Hubungi kami untuk solusi terbaik yang sesuai dengan kebutuhan bisnis Anda!