Membuat Request di Laravel

Ada banyak cara membuat Request di Laravel, akan tetapi beberapa cara tersebut mungkin akan terlihat keren jika Anda tahu metode apa saja yang paling sesuai. Jadi Request digunakan untuk mengambil data baik dari form maupun dari uri, jangan khawatir untuk memulai membuat Request. Saya sudah siapkan beberapa cara untuk mengambil data tersebut.

Daftar isi:

Cara membuat request di Laravel

Sekarang waktunya Anda mengenal request Laravel yang sengat sederhana dan menyenangkan untuk dipelajari. Hal ini salah satu tutorial yang paling mendasar yang mestinya di ketahui oleh seorang Laravel pemula, banyak trik yang mungkin jarang diketahui dalam cara menggunakannya.

Parameter di route

Request pada Laravel bukan hanya bisa digunakan untuk permintaan data dari form tetapi juga bisa digunakan dalam parameter routing.

Sisiapkan pada berkas web.php, kemudian salin dan tempelkan skrip dibawah ini:

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\HaloController;

Route::get('hai/{nama}', [HaloController::class, 'hai']);

Buat controller HaloController, kemudian salin dan tempelkan skrip dibawah ini:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HaloController extends Controller
{
    
    protected function hai(Request $request)
    {
        return "Hai nama saya $request->nama";
    }

}

Maka hasilnya bisa Anda lihat seperti gambar dibawah ini:

gambar 1

Mengambil dari form

Jika Anda belum pernah membuat CRUD Laravel mungkin cara seperti ini kelihatan asing, karena beberapa rute berbeda-beda untuk mengaksesnya. Salin dan tempelkan di berkas web.php untuk menambah rute hai (get) dan halo (post).

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\HaloController;

Route::get('hai', [HaloController::class, 'hai']);
Route::post('halo', [HaloController::class, 'halo'])->name('halo');

Jadi fungsi rute hai digunakan untuk menampilkan form dan sedangkan halo digunakan untuk memproses input post. Pada rute halo jangan lupa memberikan nama (name('halo')) karena akan di panggil pada form.

Buka berkas HaloController.php kemudian salin dan tempelkan skrip dibawah ini:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HaloController extends Controller
{
    
    protected function hai()
    {
        return view('hai');
    }

    protected function halo(Request $request)
    {
        return "Hai nama saya $request->nama";
    }

}

Catatan: Tutorial menggunakan view dan routing sudah lewat, jika Anda baru membaca tutorial ini silakan simak penjelasannya pada daftar tutorial.

Buat berkas hai.blade.php pada direktori resources/views dan salin dan tempelkan skrip dibawah ini

<form action="{{ route('halo') }}" method="POST">
    @csrf
    <p>
        <input name="nama" placeholder="masukan nama lengkap">
    </p>
    <button type="submit">Kirim hai</button>
</form>

Catatan: @csrf wajib Anda gunakan untuk semua form, kalau tidak akan menampilkan galat 419 setalah melakukan proses kirim.

Lihat gambar berikut dan ini adalah hasil bila Anda selesai mencapainya.

gambar 2

Lebih lanjut di request

Sedangkan yang satu ini adalah cara bonus lanjutan yang suatu saat pasti Anda akan memerlukannya, baik sedang membuang data request yang tidak penting atau bahkan menambahkan data request tanpa harus mengirim data tersebut.

Cara lain tanpa class Request

Cara satu ini Anda tidak menggunakan lagi (Request $request) karena Anda dapat menggunakannya seperti request(), itu sangat sederhana. Tetapi cara seperti ini tidak salah lihat pada dokumen resmi Laravel pada saat tutorial ini dibuat. Lihat cara skrip dibawah ini:

protected function halo()
{
    return "Hai nama saya " . request('nama');
}

Menampilkan semua data

Pada kenyataannya saya suka dengan cara seperti dibawah ini, bila saya memasukan semua variabel request ke basis data. Karena tanpa perlu memanggil variabel request secara manual, silakan coba skrip dibawah ini:

$request->all();

request()->all();

Catatan: Jika ingin menggunakan metode all() pada saat proses input data ke basis data, pastikan semua kolom tabel basis data sama dengan variabel data request.

Mengambil sebagian data

Metode merge() Metode merge() digunakan untuk menambahkan variabel request langsung pada controller, tanpa perlu menambahkan variabel request dari form atau parameter routing. Silakan coba skrip dibawah ini:

$request->merge(['umur' => 20]);

dd($request->all());

/*
array:2 [
  "nama" => "Febri Hidayan"
  "umur" => 20
]
/*

Metode only() Metode only() digunakan untuk mengambil variabel request yang diperlukan saja dan mengabaikan semua variabel yang tidak diinginkan. Silakan coba skrip dibawah ini:

$request->merge(['umur' => 20]);

$request->only(['umur']);

dd($request->all());

/*
array:1 [
  "umur" => 20
]
*/

Metode except() Metode except() kebalikan dari metode only() yaitu digunakan untuk membuang variabel request yang tidak diinginkan. Silakan uji coba skrip dibawah ini:

$request->merge(['umur' => 20]);

$data = $request->except(['nama']);

dd($data);

/*
array:1 [
  "umur" => 20
]
*/

Skrip diatas mungkin Anda tidak akan bisa menggunakan metode all() secara langsung, maka skrip dibawah inilah menjadi alasannya untuk membuang variabel request dengan metode replace(). Jalan lupa pratekan cara dibawah ini:

$request->replace($request->except(['nama']));

dd($request->all());

Catatan form: Hal yang paling penting bila Anda mengeluarkan semua data request, saya harap Anda tidak menghapus request _token. Saya belum mencoba hal tersebut pada saat proses penginputan data di form.