Tutorial Sebelumnya:
Tutorial Laravel #5: Cara Membuat Controller pada Laravel
Pada artikel sebelumnya kita telah belajar membuat view, kemudian memanggil view tersebut dengan controller. Sekarang kita akan mempelajari Passing Data dari Controller ke View Laravel.
Passing data adalah proses mengirim/mengoper data. Data yang dikirim bisa berupa Data String dan bisa juga data berupa Data Array.
Passing Data Laravel adalah bagaimana cara mengirim data dari Controller Laravel untuk ditampilkan di View Laravel.
Passing Data dari Controller ke View Laravel
Pertama kita buat sebuah controller dengan perintah php artisan. Controller yang akan kita buat bernama SantriController.
Masuk ke direktori project laravel dan jalankan command berikut ini:
php artisan make:controller SantriController
gambar php artisan make-controller
Jika controller sudah selesai dibuat, kita harus membuat route baru yang digunakan untuk mengakses controller tersebut.
Caranya buka file web.php pada folder routes. Tambahkan baris kode berikut ini di bagian paling atas:
use App\Http\Controllers\SantriController;
Kemudian tambahkan baris kode berikut ini paling bawah, untuk mengakses controller SantriController.
Route::get('santri', [SantriController::class, 'index']);
Kode lengkap route pada file web.php akan seperti berikut:
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\SantriController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return view('welcome');
});
Route::get('blog', function () {
return view('blog');
});
Route::get('santri', [SantriController::class, 'index']);
Kita sudah berhasil membuat controller dan routingnya. Sekarang kita buat function index dalam SantriController. Dalam function inilah kita mengirim data ke view nantinya.
Buka file SantriController.php dan buat kode seperti di bawah ini:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class SantriController extends Controller
{
public function index()
{
$nama = 'www.ayongoding.com';
return view('santri', ['nama' => $nama]);
}
}
Perhatikan kode di atas, kita sudah membuat variable nama ($nama) yang menyimpan teks “www.ayongoding.com”.
Kemudian pada bagian ['nama' => $nama]
memerintahkan untuk mengirimkan data bernama $nama ke view santri. Selanjutnya pada view santri.blade.php kita bisa langsung menampilkan data yang ada pada $nama tersebut.
Buka file view santri.blade.php yang sudah kita buat pada tutorial sebelumnya berada di folder resource/views. Maka cara penulisan untuk menampilkan $nama pada file view santri.blade.php adalah sebagai berikut:
<!DOCTYPE html>
<html>
<head>
<title>Ayo Ngoding - Passing Data Controller Ke View Laravel</title>
</head>
<body>
Nama: {{$nama}}
</body>
</html>
Perhatikan kode di atas, kita bisa langsung menampilkan data yang ada dalam $nama tadi hanya dengan menuliskan kode {{$nama}}
. Karena datanya bukan array, kita bisa menampilkan data tersebut tanpa foreach. Inilah kelebihan dari sistem template blade dari Laravel (.blade.php) yang sangat memudahkan kita. Jadi kita tidak perlu lagi menuliskannya dengan cara membuka tag php seperti <?php echo $nama; ?>
Sekarang coba buka di web browser dengan url localhost:8000/santri, maka hasilnya seperti berikut ini:
Passing Data Array Laravel
Untuk passing Data Array Laravel tidak ada perbedaan dengan Passing Data String pada cara sebelumnya di atas. Hanya saja jika Data Array yang dikirim lebih dari satu variable, maka kita tinggal menambahkan simbol koma untuk memisahkan variable yang dikirim.
Coba Tambahkan function baru dengan nama function biodata pada controller SantriController.php, seperti berikut ini:
public function biodata()
{
$nama = 'www.ayongoding.com';
$mata_pelajaran = ['Laravel', 'Pemrograman Web', 'Basis Data'];
return view('biodata', ['nama' => $nama, 'mapel' => $mata_pelajaran]);
}
Perhatikan kode di atas, pada bagian $mata_pelajaran = ['Laravel', 'Pemrograman Web', 'Basis Data']
data array yang kita masukkan dalam $mata_pelajaran bisa langsung kita passing ke view, dengan cara data-data yang dikirim ke view tinggal kita pisahkan dengan tanda koma seperti kode di atas.
Pada bagian 'mapel' => $mata_pelajaran
, data array yang kita masukkan dalam $mata_pelajaran kemudian kita kirimkan dengan nama “mapel” ke view biodata. Jadi pada view kita akan mengakses dengan nama “mapel”.
Kode lengkap dari file SantriController.php menjadi seperti berikut ini:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class SantriController extends Controller
{
public function index()
{
$nama = 'www.ayongoding.com';
return view('santri', ['nama' => $nama]);
}
public function biodata()
{
$nama = 'www.ayongoding.com';
$mata_pelajaran = ['Laravel', 'Pemrograman Web', 'Basis Data'];
return view('biodata', ['nama' => $nama, 'mapel' => $mata_pelajaran]);
}
}
Karena view biodata belum ada, buat sebuah file view baru pada folder resource/views, dengan nama biodata.blade.php, isi dengan kode berikut:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Passing Data Array pada Laravel - Ayo Ngoding</title>
</head>
<body>
<h1>Tutorial Laravel - Ayo Ngoding</h1>
<a href="https://www.ayongoding.com/tutorial-laravel">www.ayongoding.com</a>
<br>
<p>Nama : {{$nama}}</p>
<p>Mata Pelajaran</p>
<ul>
@foreach($mapel as $m)
<li>{{$m}}</li>
@endforeach
</ul>
</body>
</html>
Perhatikan pada kode di atas, data array mapel yang dikirimkan dari controller kita tampilkan dengan menggunakan foreach() karena datanya dalam bentuk array.
Data $mapel kita ubah menjadi $m dalam fungsi foreach(), kemudian kita tinggal menampilkan $m seperti pada kode di atas.
Penulisan fungsi foreach dan perulangan lainnya juga tidak lagi memakai tag php, kita bisa menggunakan simbol @ secara langsung.
Lalu kita butuh route baru lagi untuk mengakses function biodata yg berada pada SantriController.php. Tambahkan route baru pada file web.php seperti berikut ini:
Route::get('biodata', [SantriController::class, 'biodata']);
Sehingga isi route lengkap kita menjadi seperti di bawah ini:
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\SantriController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
route::get('/', function()
{
return view('welcome');
})
route::get('blog', function()
{
return view('blog');
})
Route::get('santri', [SantriController::class, 'index']);
Route::get('biodata', [SantriController::class, 'biodata']);
Sekarang lihat hasilnya di localhost:8000/biodata
Kita telah selesai belajar Passing Data Laravel, mengirim data dari controller kemudian di tampilkan ke view, baik itu data string maupun data array. Pada tutorial selanjutnya kita akan belajar Request Data pada Laravel.
Tutorial Selanjutnya:
Tutorial Laravel #7: Cara Request Data pada Laravel
Apakah mungkin untuk mengirim data dari beberapa Controller ke satu View dalam Laravel?