Cara menggunakan html_entity_decode in laravel

Pada saat mengembangkan aplikasi web, terkadang kita perlu mengambil data pada bagian URI untuk digunakan pada controller atau lainnya. sebagai contoh misalnya kita ingin mengambil id berita pada URL, maka kita dapat menambahkan paramater pada saat penjaluran.

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);
1

Kita juga dapat membuat lebih dari satu parameter mengambil data pada URI.

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);
2

Penulisan parameter penjaluran harus menggunakan tanda kurung kurawal { } dan menggunakan karakter alfabet atau boleh juga menggunakan tanda garis bawah / underscore ( _ ).

# Parameters & Dependency Injection 

Pada saat kita ingin menyertakan data (dependency) dan mengambil nilai parameter sekaligus, maka kita dapat meletakkan parameter setelah dependency tersebut. 

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);
3

# Optional Parameters

Kita dapat menggunakan parameter optional pada penjaluran yang kita buat degan menambahkan tanda tanya ( ? ). Parameter ini memungkinkan kita mengatur nilai parameter sesuai dengan yang kita tentukan jika nilai parameter sebelumnya bernilai null atau kosong. 

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);
4

Penjaluran diatas menunjukkan bahwa jika variabel name bernilai kosong maka laravel secara otomatis akan mengisi dengan nilai John.

# Batasan Reguler Expression

Dengan menggunakan metode where pada penjaluran kita dapat membatasi nilai dari parameter pada url yang dapat diinputkan. Pembatasan dilakukan dengan menuliskan nama parameter dan reguler expression.

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);
5

Untuk mempermudah melakukan pembatasan yang bersifat umum atau sering digunakan dapat menggunakan beberapa metode seperti:

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);
6

Dengan melakukan pembatasan maka jika pengguna memasukkan nilai yang tidak sesuai, maka pengguna akan diarahkan ke halaman 404 not found.

# Pembatasan Secara Global

Kita juga dapat melakukan pembatasan secara global terhadap parameter tertentu dengan menambahkan reguler expression didalam method boots pada kelas App\Providers\RouteServiceProvider.

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);
7

Pembatasan diatas akan berlaku terhadap semua paramater id pada penjaluran yang kita buat.

# Memberikan Nama Route

Kita dapat memberikan nama pada route/penjaluran untuk kemudian dipanggil sebagai url untuk mempermudah pada saat membuat kode. sebagai contoh:

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);
8

Selanjutnya kita dapat membuat url untuk mengarahkan pada route diatas sebagai berikut:

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);
9

atau dapat membuat redirect atau pengalihan dengan route diatas sebagai berikut:

Route::match(['get', 'post'], '/', function () {
//
});

Route::any('/', function () {
//
});
0

Jika kita menambahkan paramater pada route yang kita buat, kita dapat menambahkan nilai dari parameter tertentu pada komentar kedua pada fungsi route. Nilai dari parameter akan secara otomatis dimasukkan pada posisi parameter di url.

Route::match(['get', 'post'], '/', function () {
//
});

Route::any('/', function () {
//
});
1

Variabel $url diatas akan bernilai /user/1/profile. Dan jika kita menambahkan lebih dari satu data dalam bentuk array maka secara otomatis akan diubah menjadi url query string.

Route::match(['get', 'post'], '/', function () {
//
});

Route::any('/', function () {
//
});
2

# Route Groups / Pengelompokan Penjaluran

Route groups atau pengelompokan penjaluran memungkinkan kita untuk membuat kelompok pada penjaluran dan menambahkan atribut tertentu seperti middleware. Dengan melakukan pengelompokan kita tidak perlu memberikan atribut satu persatu pada route yang memiliki atribut yang sama. Kita dapat mengelompokkan route berdasakan hal-hal sebagai berikut:

# Middleware

Hal pertama yang dapat dilakukan yaitu mengelompokkan route berdasarkan middleware tertentu, biasanya ini digunakan untuk melakukan pembatasan berkenaan dengan hak akses. Misalnya kita ingin membuat sebuah route yang hanya bisa diakses ketika pengguna telah login sebagai admin. Untuk melakukan hal tersebut kita dapat menggunakan metode middleware sebelum mendefinisikan route yang akan kita buat.

Route::match(['get', 'post'], '/', function () {
//
});

Route::any('/', function () {
//
});
3

# Controllers

Kita juga dapat mengelompokkan route berdasarkan controller tertentu apabila route menggunakan method/metode di dalam controller yang sama.

Route::match(['get', 'post'], '/', function () {
//
});

Route::any('/', function () {
//
});
4

# Subdomain Routing

Pengelompokan route selanjutnya yang dapat dilakukan yaitu mengelompokkan route berdasarkan subdomain untuk membatasi bahwa route terntentu hanya dapat diakses melalui subdomain yang kita daftarkan.

Route::match(['get', 'post'], '/', function () {
//
});

Route::any('/', function () {
//
});
5

# Route Prefixes

Pegelompokan route berdasakan prefik atau awalan pada url dapat dilakukan agar route yang kita buat lebih terstruktur. Misalnya kita ingin mengakses route dengan prefik admin, maka kita dapat mengunakan cara sebagai berikut:

Route::match(['get', 'post'], '/', function () {
//
});

Route::any('/', function () {
//
});
6

# Route Name Prefixes

Kita dapat memberikan nama route dengan mengelompokkan penamaan route tersebut berdasarkan prefix tertentu. Sebagai contoh misalnya kita ingin memberikan penamaan route yang diawali dengan admin. Pada proses pengelompokan seperti ini penamaan route akan diawali persis seperti karakter nama awalan yang diberikan, untuk memudahkan dalam mengorganisir sebaiknya prefix diberi akhiran titik (.).

Route::match(['get', 'post'], '/', function () {
//
});

Route::any('/', function () {
//
});
7

# Rate Limiting / Pembatasan Jumlah Kunjungan

Framework laravel memiliki fitur untuk membatasi jumlah kunjungan dalam waktu tertentu yang dapat dengan mudah dikonfigurasi dan diterapkan pada route atau kelompok route tertentu. Untuk membatasi jumlah kunjungan pengguna kita dapat melakukannya pada metode configureRateLimiting yang terdapat pada kelas App\Providers\RouteServiceProvider

Pembatasan kunjungan ini ditangani oleh metode RateLimite facade's dan konfigurasi pembatasan jumlah kunjungan menggunakan kelas Illuminate\Cache\RateLimiting\Limit sehingga kedua kelas tersebut harus dipanggil terlebih dahulu untuk memulai melakukan pembatasan. Adapun secara umum pembatasan jumlah kunjungan dapat dilakukan dengan mengedit file App\Providers\RouteServiceProvider sebagai berikut:

Route::match(['get', 'post'], '/', function () {
//
});

Route::any('/', function () {
//
});
8

Pada saat jumlah kunjungan telah melewati batas yang ditetapkan, maka secara otomatis pengunjung akan mendapatkan respon dengan status kode HTTP 429 pada saat membuka halaman lainnya. Kita juga dapat mendefinisikan status respon sendiri melalui metode response. 

Route::match(['get', 'post'], '/', function () {
//
});

Route::any('/', function () {
//
});
9

Pada saat jumlah kunjungan telah mencapai batas maksimum, maka pengunjung tidak lagi dapat mengakses website atau akan mendapatkan renspon kode 429. Namun untuk pengunjung tertentu, misalnya pengunjung vip, kita dapat memberikan pengecualian sehingga pengunjung tersebut masih tetap dapat mengakses website walaupun telah melewati limit. Pengecualian biasanya dilakukan berdasarkan autentifikasi.

use Illuminate\Http\Request;
 
Route::get('/users', function (Request $request) {
    // ...
});
0

# Segmenting Rate Limits

Adakalanya kita ingin memberikan batasan jumlah kunjungan berdasarkan atribut tertentu, misalnya kita ingin membatasi jumlah kunjungan pengguna 100 kali maksimal dalam kurun waktu satu menit berdasarkan alamat IP. Maka kita dapat melakukan pembatasan degan menggunakan method by sebagai berikut:

use Illuminate\Http\Request;
 
Route::get('/users', function (Request $request) {
    // ...
});
1

Atau dalam contoh yang lain kita ingin memberikan batasan kunjungan 100 kali untuk pengguna terdaftar berdasarkann autentikasi ID dan 10 kali berdasarkan alamat IP untuk pengunjung tanpa login.

use Illuminate\Http\Request;
 
Route::get('/users', function (Request $request) {
    // ...
});
2

# Membuat Rate Limit pada Route

Laravel juga menyediakan metode untuk melakukan batasan kunjungan melalui throttle middleware. 

use Illuminate\Http\Request;
 
Route::get('/users', function (Request $request) {
    // ...
});
3

# Form Method Spoofing

HTML Form tidak mendukung penggunaan metode PUT, PATCH, dan DELETE, sehingga pada saat membuat route PUT, PATCH, dan DELETE yang dipanggil dari form HTML kita harus membuat inputan hidden dengan nama _method  ke from HTML. Data yang dikirim melalui inputan _method akan digunakan sebagai metode HTTP request.