Fitur request data di bahasa pemrograman PHP kamu pasti telah familiar dengan perintah GET dan POST. Perintah tersebut berfungsi untuk menerima/menangkap data yang kita kirim dari form inputan ataupun URL. Di Laravel pun sama, kita juga bisa melakukan penangkapan data. Request adalah istilah penangkapan data yang ada di Laravel. Kita akan belajar bagaimana menangkap sebuah data dengan perintah Request pada Laravel. Caranya pun tidak sulit, pahami penjelasan berikut ini dan sebaiknya langsung mempraktekkan dengan contoh kasus yang ada pada tutorial ini.
Ada 2 macam perintah Request atau penerimaan data pada Laravel, yaitu:
- Penerimaan data melalui URL
- Penerimaan data melalui input
Kita akan banyak menggunakan perintah Request atau penerimaan data pada saat mengembangkan aplikasi menggunakan Laravel, baik itu menerima atau menangkap data melalui URL, menangkap data melalui inputan form seperti pada proses login, CRUD dan proses lain yang memerlukan pengolahan data.
Request Data / Menangkap Data Dari URL
Pertama-tama kita akan mencoba menangkap data dari URL. Sebenarnya ada banyak cara yang dapat kita gunakan, namun kita akan menggunakan teknik sederhana yang menurut saya paling mudah dan penggunaannya paling banyak.
Sebelumnya kita juga telah belajar membuat route pada Laravel, silakan baca tutorial Laravel #2 – Belajar Route & View pada Laravel 8 jika kamu belum membacanya.
Baiklah, sekarang buka file web.php pada folder routes dalam project laravel yang telah kita buat sebelumnya dari tutorial Laravel #3 – Membuat Controller pada Laravel 8.
Buatlah sebuah route baru seperti berikut ini di file web.php.
routes/web.php
Route::get('/dosen/{nama}', [DosenController::class, 'ambilNama']);
Kita telah membuat route baru dengan slug pertama “dosen” diikuti slug kedua yaitu “{nama}”. Untuk penamaannya bebas, kamu bisa menyesuaikannya sendiri.
Ketika mengakses 127.0.0.1:8000/dosen/blablabla, maka akan menjalankan method/funciton “ambilNama” pada DosenController.
Sekarang kita akan membuat controller sesuai dengan nama route yang kita buat tadi, yaitu “ambilNama”.
app/Http/Controllers/DosenController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class DosenController extends Controller
{
public function ambilNama($nama)
{
return $nama;
}
}
Perhatikan syntax kode di atas, kita telah membuat method/function “ambilNama” dengan menangkap data yang dikirim dari route yang kita buat tadi.
public function ambilNama($nama)
{
return $nama;
}
Jadi, untuk menangkap data dari dari controller yang terdapat slug {nama} tadi, kita tinggal menangkapnya di method/function dengan menuliskan variable nama dalam method/function “ambilNama” seperti yang ada pada contoh di atas.
Kemudian kita bisa langsung mengolah data yang ditangkap tadi dengan menjalankan project belajar_laravel dan akses 127.0.0.1:8000/dosen/aantamim pada web browser.
Seperti yang kamu lihat pada gambar di atas, kita mengirimkan data “aantamim” pada URL. Jadi, controller kita akan me-return datanya langsung sesuai apa yang kita ketikkan pada URL.
Request Data / Menangkap Data Dari Inputan
Setelah kita belajar menangkap data dari URL, kita akan lanjut belajar menangkap data dari inputan form menggunakan form method POST.
Sekarang kita akan membuat dua buah route baru.
routes/web.php
Route::get('/formulir', [DosenController::class, 'formulir']);
Route::post('/formulir/proses', [DosenController::class, 'proses']);
Pada route “/formulir” kita akan memerintahkan method/function formulir yang ada dalam DosenController menggunakan fungsi get(). Sedangkan pada route “/formulir/proses” kita memerintahkan method proses dalam DosenController untuk menangkap data yang kita kirim dari form menggunakan fungsi post().
Kemudian buat sebuah method/function formulir pada DosenController. Pada method formulir ini kita memanggil view formulir sebagai tampilan untuk form inputannya.
public function formulir()
{
return view('formulir');
}
Selanjutnya kita akan membuat file formulir.blade.php yang berisi tag input pada form method POST yang form actionnya kita arahkan ke “/formulir/proses” yang telah kita buat pada routingnya.
resources/views/formulir.blade.php
<!DOCTYPE html>
<html>
<head>
<title>Tutorial Laravel - Request Data</title>
</head>
<body>
<form action="/formulir/proses" method="post">
<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>" />
Nama:
<input type="text" name="nama" /><br />
Alamat:
<input type="text" name="alamat" /><br />
<button type="submit">Simpan</button>
</form>
</body>
</html>
Pada form di atas kita juga membuat csrf token, mungkin terdengar asing bagi kita yang masih tahap awal belajar Laravel. Cross-site request forgery atau disingkat CSRF adalah sebuah serangan yang dilakukan oleh pengguna yang tidak terautentikasi untuk mengeksekusi perintah. Untuk mengatasi ini, Laravel sudah menyediakan CSRF Token. Nantinya token inilah yang melakukan verifikasi apakah request yang diberikan memang berasal dari user yang bersangkutan.
Jadi, setiap kali kita akan membuat form, kita harus memasukkan token CSRF seperti pada syntax kode di atas.
Karena pada form kita mengatur actionnya ke “/formulir/proses” berdasarkan route yang ada di web.php, kita akan membuat method lagi yaitu proses() pada DosenController.
public function proses(Request $request)
{
$nama = $request->nama;
$alamat = $request->alamat;
return 'Nama: '.$nama.', Alamat: '.$alamat;
}
Jadi isi keseluruhan dari file DosenController.php adalah seperti di bawah ini.
app/Http/Controllers/DosenController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class DosenController extends Controller
{
public function ambilNama($nama)
{
return $nama;
}
public function formulir()
{
return view('formulir');
}
public function proses(Request $request)
{
$nama = $request->nama;
$alamat = $request->alamat;
return 'Nama: '.$nama.', Alamat: '.$alamat;
}
}
Sekarang kita akan mencoba mengakses http://127.0.0.1:8000/formulir.
Setelah mengisi form, klik tombol simpan untuk submit data.
Kesimpulan
Untuk menangkap data dari URL, kita bisa langsung mempassing variable sebagai parameter di methodnya, sedangkan jika kita ingin menangkap data dari form, kita harus mendeklarasikan keyword Request diikuti dengan variable misalnya $request di parameter methodnya. Variable setelah keyword Request tersebut berfungsi untuk menyimpan data-data yang kita kirim dari form, kita bisa menampilkan data dari form tersebut dengan menuliskan $request diikuti nama inputan pada kolom form seperti pada contoh syntax kode di atas. Selengkapnya mengenai HTTP Request pada Laravel, kamu bisa mengunjungi dokumentasinya di https://laravel.com/docs/requests.