Cara Membuat Route Dengan Banyak Parameter Secara Dinamis di Laravel

Dalam membuat website terkadang kita perlu membuat banyak parameter di dalam route secara dinamis pada laravel kita. Di tutorial ini kita akan membuat route dinamis sehingga kita bisa menggunakan untuk parameter sebanyak-banyaknya. Pada tutorial ini menggunakan laravel 9.

Tambahkan Route

Langkah awal silahkan kalian buka file route. kemudian kalian tambahkan route seperti di bawah ini.

use App\Http\Controllers\TestController;

Route::get('{slug?}', TestController::class)->name('page_url')->where('slug','.+');

Buat Controller

Sekarang mari kita membuat controller dengan nama TestController. silahkan kalian copy kode di bawah ini untuk membuat controller. kemudian silahkan paste di command line kalian.

php artisan make:controller TestController

Setelah Controller berhasil dibuat. silahkan kalian copy kode di bawah ini dan paste ke dalam controller yang baru dibuat tadi.

namespace App\Http\Controllers;

use App\User;
use App\Http\Controllers\Controller;
use Illuminate\Http\Response;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\View;
use Illuminate\Support\Facades\DB;

class TestController extends Controller
{
    /**
     * Show the page for the given slug.
     *
     * @param  string  $request uri
     * @return Response
     */
    public function __invoke(Request $request)
    {

        $request_path = $request->path();

        $request_path_array = explode('/', $request_path);

    }


}

Penjelasan

Pada bagian route telah kita tambahkan parameter {slug?} dan juga menambahkan kondisi where. Jadi, dengan begitu kita bisa menambahkan parameter sebanyak mungkin secara dinamis. Kalian juga dapat menambahkan ekspresi reguler apa pun dalam kondisi wehere.

Kalian bisa buat url seperti ini https://example.com/parameter1/paramerter2 dan seterusnya.

Sekarang pada bagian controller disitu terdapat magic method yaitu __invoke yang berfungsi untuk memanggil otomatis sebuah class. kemudian pada variabel request_path untuk menampung parameter url. hasilnya seperti ini.

kemudian kita akan masukan hasil request tersebut kedalam array. disini kita menggunakan fungsi explode() yang berguna untuk mengubah suatu text atau kalimat menjadi sebuah array berdasarkan separator. Hasil explode tersebut kita tampung ke variabel request_path_array. maka hasilnya seperti berikut.

Jika kalian tidak ingin menerapkan uri tertentu ke route kalian, maka kalian dapat menggunakan kode seperti dibawah ini yang menggunakan semua route kecuali api di route.

use App\Http\Controllers\TestController;

Route::get('{slug?}', TestController::class)->name('page_url')->where('slug','^(?!api).*$');

Jika kalian ingin menbahkan prefix pada route kalian, maka kalian dapat menggunakan kode dibawah ini dan sekarang url kalian akan terlihat seperti ini https://example.com/your-prefix/parameter1/parameter2.

use App\Http\Controllers\TestController;

Route::prefix('your-prefix')->group(function () {

    Route::get('{slug?}', TestController::class)->name('page_url')->where('slug','.+');

});

Penutup

Sekian tutorial membuat route dengan banyak parameter secara dinamis di laravel. Jika masih ada kesulitan ketika mengikuti tutorial diatas, kalian bisa komentar dibawah sini. Terimakasih.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top