Tentu, berikut adalah artikel tutorial tentang cara mengirim data dari Controller ke View pada Laravel.
Pada tutorial sebelumnya, kita telah mempelajari peran Controller sebagai pusat logika aplikasi dan View sebagai lapisan tampilan. Namun, agar View dapat menampilkan konten yang dinamis, kita perlu mengirimkan data dari Controller ke View. Proses ini adalah salah satu konsep paling fundamental dan sering digunakan dalam pengembangan aplikasi Laravel.
Mengapa Mengirim Data?
Tujuan utama dari arsitektur MVC adalah memisahkan logika dari tampilan. Controller mengambil atau memproses data, tetapi tidak boleh menampilkannya secara langsung. Sebaliknya, View bertanggung jawab penuh untuk menampilkan data tersebut. Dengan demikian, tugas Controller adalah mempersiapkan data, dan tugas View adalah menerima serta menampilkannya.
Laravel menyediakan beberapa cara yang mudah dan fleksibel untuk melakukan pengiriman data ini.
Metode 1: Menggunakan Array Asosiatif (Cara Umum)
Ini adalah cara paling umum dan direkomendasikan untuk mengirim data dari Controller ke View. Anda cukup meneruskan sebuah array asosiatif sebagai argumen kedua dari fungsi view(). Kunci (key) dari array akan menjadi nama variabel di dalam View.
Mari kita gunakan contoh sederhana. Buatlah Controller baru dengan perintah Artisan:
php artisan make:controller DataController
Kemudian, buka file app/Http/Controllers/DataController.php dan tambahkan method index():
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class DataController extends Controller
{
public function index()
{
$judul = 'Belajar Laravel';
$deskripsi = 'Tutorial ini membahas cara mengirim data dari Controller ke View.';
$data = [
'judul' => $judul,
'deskripsi' => $deskripsi,
'tahun' => 2025
];
return view('halaman_data', $data);
}
}
Pada kode di atas, kita membuat array $data dengan tiga kunci (judul, deskripsi, tahun). Array ini kemudian diteruskan ke fungsi view().
Sekarang, buat file View baru di resources/views/halaman_data.blade.php:
<!DOCTYPE html>
<html>
<head>
<title>{{ $judul }}</title>
</head>
<body>
<h1>{{ $judul }}</h1>
<p>{{ $deskripsi }}</p>
<p>Tahun: {{ $tahun }}</p>
</body>
</html>
Perhatikan bahwa kita bisa mengakses variabel $judul, $deskripsi, dan $tahun secara langsung di dalam View, tanpa perlu mendeklarasikannya.
Terakhir, definisikan route di routes/web.php untuk memanggil Controller ini:
use App\Http\Controllers\DataController;
Route::get('/data', [DataController::class, 'index']);
Akses http://nama-proyek-anda.test/data di browser, dan Anda akan melihat data yang dikirimkan dari Controller ditampilkan dengan benar.
Metode 2: Menggunakan Fungsi compact()
Fungsi compact() adalah fungsi bawaan PHP yang menyediakan cara ringkas untuk membuat array asosiatif dari variabel-variabel yang sudah ada. Ini sangat berguna jika Anda memiliki banyak variabel yang ingin dikirimkan.
Mari kita modifikasi contoh di atas menggunakan compact():
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class DataController extends Controller
{
public function show()
{
$judul = 'Halaman Artikel';
$penulis = 'Budi Santoso';
$tanggal = '22 Agustus 2025';
return view('halaman_artikel', compact('judul', 'penulis', 'tanggal'));
}
}
Pada kode di atas, compact('judul', 'penulis', 'tanggal') akan menghasilkan array yang sama dengan ['judul' => $judul, 'penulis' => $penulis, 'tanggal' => $tanggal].
Tentu saja, Anda perlu membuat View yang sesuai (halaman_artikel.blade.php) dan route untuk metode ini agar dapat diakses.
Metode 3: Menggunakan Fungsi with()
Fungsi with() adalah metode chaining yang juga dapat digunakan untuk mengirim data.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class DataController extends Controller
{
public function about()
{
$versi_app = 'v1.0.0';
return view('tentang_kami')->with('versi', $versi_app);
}
}
Pada contoh ini, kita menggunakan ->with('versi', $versi_app). Ini akan membuat variabel $versi tersedia di dalam View tentang_kami.blade.php. Anda juga bisa merangkai beberapa panggilan with():
return view('tentang_kami')
->with('versi', $versi_app)
->with('penulis', 'Tim Pengembang');
Kesimpulan
Mengirim data dari Controller ke View adalah langkah penting untuk membuat halaman web yang dinamis dan interaktif. Laravel menyediakan berbagai cara untuk melakukannya, dengan metode array asosiatif dan compact() sebagai pilihan yang paling umum dan mudah. Dengan menguasai konsep ini, Anda dapat memisahkan data dari tampilan dengan efektif, yang merupakan inti dari arsitektur MVC.
Pada tutorial berikutnya, kita akan menyelam lebih dalam ke dunia Blade Templating, mempelajari fitur-fitur canggih yang membuat Laravel menjadi pilihan utama untuk pengembangan web.