Wed Dec 2019 1 year ago

Memahami HTTP Request (Input Trimming, Normalization & Retrieving Input) Laravel 5

#Input Trimming & Normalization

Secara default, Laravel menyertakan Trim\Strings dan Convert\Empty\Strings\ToNull middleware dalam tumpukan middleware global aplikasi Anda. Middleware ini terdaftar di stack oleh kelas. Middleware ini akan secara otomatis memangkas semua bidang string yang masuk pada permintaan, serta mengkonversi bidang string kosong . Ini memungkinkan Anda untuk tidak perlu khawatir tentang masalah normalisasi ini di route dan controller Anda.App\Http\Kernel\null

Jika Anda ingin menonaktifkan ini, Anda dapat menghapus dua middleware dari tumpukan middleware aplikasi Anda dengan menghapusnya dari $middleware properti kelas Anda .App\Http\Kernel

 

#Retrieving Input

Mengambil Semua Data Input

Anda juga dapat mengambil semua data input sebagai metode array menggunakan all:

$input = $request->all();

Mengambil Nilai Input

Dengan menggunakan beberapa metode sederhana, Anda dapat mengakses semua input pengguna dari instance Anda tanpa khawatir tentang kata kerja HTTP mana yang digunakan untuk permintaan tersebut. Terlepas dari kata kerja HTTP, metode ini dapat digunakan untuk mengambil input pengguna:Illuminate\Http\Requestinput

$name = $request->input('name');

Anda dapat memberikan nilai default sebagai argumen kedua ke input metode. Nilai ini akan dikembalikan jika nilai input yang diminta tidak ada pada permintaan:

$name = $request->input('name', 'Sally');

Saat bekerja dengan formulir yang berisi input array, gunakan notasi "dot" untuk mengakses array:

$name = $request->input('products.0.name');

$names = $request->input('products.*.name');

Anda dapat memanggil input metode tanpa argumen apa pun untuk mengambil semua nilai input sebagai array asosiatif:

$input = $request->input();

Mengambil Input Dari String Query

Sementara input metode mengambil nilai dari seluruh permintaan muatan (termasuk string kueri), querymetode hanya akan mengambil nilai dari string kueri:

$name = $request->query('name');

Jika data nilai string kueri yang diminta tidak ada, argumen kedua untuk metode ini akan dikembalikan:

$name = $request->query('name', 'Helen');

Anda dapat memanggil query metode tanpa argumen apa pun untuk mengambil semua nilai string kueri sebagai array asosiatif:

$query = $request->query();

Mengambil Input Melalui Properti Dinamis

Anda juga dapat mengakses input pengguna menggunakan properti dinamis . Misalnya, jika salah satu formulir aplikasi Anda berisi bidang, Anda dapat mengakses nilai bidang seperti:Illuminate\Http\Requestname

$name = $request->name;

Saat menggunakan properti dinamis, Laravel pertama-tama akan mencari nilai parameter dalam payload permintaan. Jika tidak ada, Laravel akan mencari bidang di parameter rute.

Mengambil Nilai Input JSON

Saat mengirim permintaan JSON ke aplikasi Anda, Anda dapat mengakses data JSON melalui inputmetode selama header permintaan diatur dengan benar . Anda bahkan dapat menggunakan sintaks "dot" untuk menggali array JSON:Content-Typeapplication/json

$name = $request->input('user.name');

Mengambil Sebagian Data Input

Jika Anda perlu mengambil subset dari data input, Anda dapat menggunakan only dan except metode. Kedua metode ini menerima satu arrayatau beberapa daftar argumen yang dinamis:

$input = $request->only(['username', 'password']);

$input = $request->only('username', 'password');

$input = $request->except(['credit_card']);

$input = $request->except('credit_card');

 

 

Menentukan Jika Suatu Nilai Input Hadir

Anda harus menggunakan has metode ini untuk menentukan apakah suatu nilai ada pada permintaan. The has method mengembalikan true jika nilai hadir pada permintaan:

if ($request->has('name')) {
    //
}

Ketika diberi array, has metode akan menentukan apakah semua nilai yang ditentukan ada:

if ($request->has(['name', 'email'])) {
    //
}

Jika Anda ingin menentukan apakah suatu nilai ada pada permintaan dan tidak kosong, Anda dapat menggunakan filledmetode ini:

if ($request->filled('name')) {
    //
}

 

#Old Input

Laravel memungkinkan Anda menyimpan input dari satu permintaan selama permintaan berikutnya. Fitur ini sangat berguna untuk mengisi kembali formulir setelah mendeteksi kesalahan validasi. Namun, jika Anda menggunakan fitur validasi yang disertakan Laravel , kemungkinan Anda tidak perlu menggunakan metode ini secara manual, karena beberapa fasilitas validasi built-in Laravel akan memanggil mereka secara otomatis.

Input Berkedip Ke Sesi (Flashing Input To The Session)

The flash metode pada kelas akan berkedip input saat ini ke sesi sehingga tersedia selama permintaan berikutnya pengguna ke aplikasi:Illuminate\Http\Request

$request->flash();

Anda juga dapat menggunakan flashOnly dan flashExcept metode untuk mem-flash sebagian dari data permintaan ke sesi. Metode ini berguna untuk menjaga informasi sensitif seperti kata sandi keluar dari sesi:

$request->flashOnly(['username', 'email']);

$request->flashExcept('password');

Input Berkedip Kemudian Mengarahkan (Flashing Input Then Redirecting)

Karena Anda sering ingin mem-flash input ke sesi dan kemudian mengarahkan ulang ke halaman sebelumnya, Anda dapat dengan mudah menghubungkan input flashing ke redirect menggunakan withInput metode:

return redirect('form')->withInput();

return redirect('form')->withInput(
    $request->except('password')
);

Mengambil Input Lama (Retrieving Old Input)

Untuk mengambil input yang di-flash dari permintaan sebelumnya, gunakan old metode pada Request instance. Metode old akan menarik data masukan sebelumnya melintas dari sesi :

$username = $request->old('username');

Laravel juga menyediakan bantuan global old. Jika Anda menampilkan input lama dalam templat Blade , akan lebih mudah menggunakan oldhelper. Jika tidak ada input lama untuk bidang yang diberikan, null akan dikembalikan:

<input type="text" name="username" value="{{ old('username') }}">

 

#Cookies

Mengambil Cookie Dari Permintaan

Semua cookie yang dibuat oleh framework Laravel dienkripsi dan ditandatangani dengan kode otentikasi, artinya cookie tersebut akan dianggap tidak sah jika telah diubah oleh klien. Untuk mengambil nilai cookie dari permintaan, gunakan cookie metode ini pada contoh:IlluminateHttpRequest

$value = $request->cookie('name');

Atau, Anda dapat menggunakan Cookie fasad untuk mengakses nilai cookie:

use Illuminate\Support\Facades\Cookie;

$value = Cookie::get('name');

Melampirkan Cookies Ke Tanggapan

Anda dapat melampirkan cookie ke instance keluar menggunakan metode ini. Anda harus memasukkan nama, nilai, dan jumlah menit cookie harus dianggap valid untuk metode ini:Illuminate\Http\Responsecookie

return response('Hello World')->cookie(
    'name', 'value', $minutes
);

The cookie Metode juga menerima argumen lebih beberapa yang jarang digunakan. Secara umum, argumen ini memiliki tujuan dan makna yang sama dengan argumen yang akan diberikan kepada metode setcookie asli PHP :

return response('Hello World')->cookie(
    'name', 'value', $minutes, $path, $domain, $secure, $httpOnly
);

Atau, Anda dapat menggunakan Cookiefasad untuk "mengantri" cookie untuk lampiran ke respons keluar dari aplikasi Anda. The queueMetode menerima Cookiecontoh atau argumen yang diperlukan untuk membuat sebuah Cookie contoh. Cookie ini akan dilampirkan pada respons keluar sebelum dikirim ke browser:

Cookie::queue(Cookie::make('name', 'value', $minutes));

Cookie::queue('name', 'value', $minutes);

Membuat Instance Cookies

Jika Anda ingin membuat sebuah instance yang dapat diberikan kepada instance respons di lain waktu, Anda dapat menggunakan helper global . Cookie ini tidak akan dikirim kembali ke klien kecuali jika dilampirkan ke instance respon:Symfony\Component\Http\Foundation\Cookiecookie

$cookie = cookie('name', 'value', $minutes);

return response('Hello World')->cookie($cookie);
http request laravel tutorial laravel laravel