Pada tutorial sebelumnya kita telah membahas autentikasi, maka saat ini kita akan membahas Menggunakan POST dan GET Request Di Laravel, fungsi POST dan GET ini adalah menangkap data yang dikirim melalui atau yang ada di URL apabila menggunakan GET.
Untuk menangkap atau mengambil data apabila tidak menggunakan Laravel alias di PHP biasa maka kita mengenal $_GET
dan $_POST
untuk menangkap data yang dikirim, begitu juga di Laravel, namun caranya agak sedikit berbeda dan ada beberapa metode yang bisa kita gunakan nantinya.
Perbedaan yang paling mendasar apabila menggunakan PHP tanpa laravel dan menggunakan laravel, dimana data yang dikirim apabila menggunakan $_POST adalah asosiatif array sedangkan POST dan GET Request di laravel, data akan dikirim dalam bentuk object.
POST Request Di Laravel
Pada umumnya POST digunakan untuk menangani interaksi data melalui HTTP dengan metode Content-Type application/x-www-form-urlencoded
atau multipart/form-data
pada saat permintaan dikirim.
Nah kalau di laravel sendiri, mengirim data menggunakan POST akan ditangani oleh class Illuminate\Http\Request
meskipun sebenarnya hampir sebuah interaksi data yang dikirim client menggunakan class tersebut termasuk cookie dan session.
Sebagai contoh kita akan membuat form sederhana, buatlah sebuah controller dengan nama RequestController dengan cara menjalankan perintah dibawah ini.
php artisan make:controller RequestController
Selanjutnya buka file RequestController yang berada di folder app/Http/Controllers, lalu didalm class tersebut tambahkan kode dibawah ini.
public function viewPostData()
{
return view('request.post-data');
}
public function processPostData(Request $request)
{
echo 'Nama: ' . $request->nama . '<br>';
echo 'Email: ' . $request->email;
}
Code language: PHP (php)
Selanjutnya buat lagi file dengan nama post-data.blade.php di folder resources/views/request, folder request dibuat manual, jika sudah tambahkan kode dibawah ini didalam file post-data.blade.php tersebut.
@extends('layouts.app')
@section('content')
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Form Data</div>
<div class="card-body">
<form action="{{ url('request/post-data') }}" method="POST">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<div class="form-group">
<label for="nama">Nama</label>
<input type="text" name="nama" id="nama" class="form-control">
</div>
<div class="form-group">
<label for="email">Email</label>
<input type="email" name="email" id="email" class="form-control">
</div>
<button type="submit" class="btn btn-primary">Kirim Data</button>
</form>
</div>
</div>
</div>
</div>
@endsection
Code language: HTML, XML (xml)
Oia sebagai catatan disini penulis menggunakan Bootstrap, sehingga UI yang tampil di browser mungkin berbeda jika kamu tidak menggunakan Bootstrap.
Lalu yang terakhir bagian route, buka file web.php yang berada didalam folder routes, lalu tambahkan kode dibawah ini.
Route::get('request/post-data', [App\Http\Controllers\RequestController::class, 'viewPostData']);
Route::post('request/post-data', [App\Http\Controllers\RequestController::class, 'processPostData']);
Code language: PHP (php)
Selanjutnya jalakan projek belajar laravel menggunakan perintah dibawah ini.
php artisan serve
Lalu akses di browser anda menggunakan alamat http://127.0.0.1:8000/request/post-data maka apabila sudah sesuai akan nampak seperti pada gambar dibawah ini.
Jika sudah silahkan isi Nama dan Email menggunakan data apa saja, lalu klik tombol Kirim Data, maka di browser kamu akan menampilkan nama dan email seperti pada gambar dibawah ini.
Selanjutnya kita akan membahas metode GET data di Laravel.
GET Data Di Laravel
Biasanya $_GET
di PHP native digunakan untuk mengambil nilai yang dikirim melalui URL atau bisa disebut query string, begitu juga di laravel, hanya saja caranya yang sedikit berbeda seperti yang awal penulis katakan.
Dalam banyak kasus biasanya parameter yang dikirim di URL bisa berupa token, token digunakan untuk autentikasi dan validasi apakah client di izinkan mengakses URL tertentu, bisa juga berupa parameter pencarian, ID, dan lain sebagainya.
Berikut ini mengambil parameter yang dikirim melalui URL (Query String) menggunakan metode GET di laravel. Masih pada controller yang sama yaitu RequestController, setelah itu tambahkan method dibawah ini.
public function viewGetData(Request $request)
{
echo '<h3>Metode GET</h3>';
echo 'Nama: ' . $request->nama . '<br>';
echo 'Email: ' . $request->email;
}
Code language: PHP (php)
Jika sudah buka kembali file web.php yang ada di folder routes, lalu tambahkan kode dibawah ini.
Route::get('request/get-data', [App\Http\Controllers\RequestController::class, 'viewGetData']);
Code language: PHP (php)
Jika sudah jalankan url get-data tersebut di browser dengan mengakses URL dibawah ini apabila kamu menggunakan artisan serve
.
http://127.0.0.1:8000/request/get-data?nama=Aris+Munandar&email=admin@bahasaweb.com
Jika sudah sesuai maka seharusnya akan tampil seperti dibawah ini.
Kalau diperhatikan, kode viewGetData()
dan processPostData()
caranya sama aja, hanya saja metodenya yang berbebeda, selain itu kalau GET sebetulnya tanpa kamu menggunkan class Request juga bisa, yaitu dengan menggunakan helper seperti dibawah ini.
request()->get('nama_parameter');
Code language: PHP (php)
Helper tersebut sama dengan class Request, hanya saja penggunaannya sedikit berbeda.
Mengakses Parameter Route Laravel
Selain kedua metode diatas, laravel juga memiliki cara untuk dapat mengirim parameter di URL melalui route yang nantinya bisa di akses data tersebut di controller. Sebagai contoh, buatlah method baru di RequestController dengan nama getRouteParameter()
, seperti kode dibawah ini.
public function getRouteParameter($nama, $email)
{
echo '<h3>Route Parameter</h3>';
echo 'Nama: ' . $nama . '<br>';
echo 'Email: ' . $email;
}
Code language: PHP (php)
Lalu akses di browser dengan URL seperti dibawah ini apabila kamu menggunakan artisan serve
.
http://127.0.0.1:8000/request/route-parameter/Aris%20Munandar/arismunandardev@gmail.com
Maka di browser akan tampil seperti dibawah ini.
Demikian tutorial ini semoga bermanfaat bagi yang baru belajar Laravel.