Routing Di Laravel

    3 Metode Laravel Routing Yang Sering Digunakan: Panduan Lengkap

    Routing adalah fitur yang mendasar dalam membuat aplikasi dengan menggunakan framework laravel, maka dari itu disini kita akan membahas beberapa fitur yang bisa Anda lakukan ketika ingin membuat route.

    Irsyad A. Panjaitan

    4 min read·16 Jun 2022

    Routing Di Laravel

    Laravel Route

    Routing adalah salah satu komponen inti dalam aplikasi web yang memungkinkan Anda mendefinisikan alamat URL yang akan dipetakan ke controller tertentu dalam aplikasi Anda. Dalam Laravel, routing digunakan untuk mengarahkan semua request HTTP ke handler / method yang tepat.

    Routing di Laravel sangat fleksibel dan memberi Anda kontrol penuh atas setiap request ditangani oleh aplikasi Anda. Ini memungkinkan struktur yang rapi dan mudah dikelola untuk aplikasi yang kompleks.


    Route Resource & Api Resource

    Route ini biasa digunakan untuk membuat yang namanya CRUD (Create, Read, Update, Destroy). Jadi dari pada kita definisikan route satu persatu, lebih baik kita group dia kedalam resource.

    Ketika kita menggunakan resource, maka dia akan otomatis menggenerasi 7 url dan method pada controller yang Anda tuju.

    Dalam contoh ini, kita akan membuat controller untuk Post.

    routes/web.php
    Route::resource('articles', ArticleController::class);
    

    Kemudian, jika Anda list route nya spesipik pada posts tersebut, maka harusnya Anda akan melihat ini.

    Terminal
    artisan route:list --name=articles
    

    Dengan begitu, maka output yang dikeluarkan kurang lebih seperti:

    HTTP uri name method
    GET|HEAD articles articles.index ArticleController@index
    POST articles articles.store ArticleController@store
    GET|HEAD articles/create articles.create ArticleController@create
    GET|HEAD articles/{article} articles.show ArticleController@show
    PUT|PATCH articles/{article} articles.update ArticleController@update
    DELETE articles/{article} articles.destroy ArticleController@destroy
    GET|HEAD articles/{article}/edit articles.edit ArticleController@edit

    Nah, kemudian, jika Anda ingin membuat controller nya, sudah pasti mudah dengan cara memberi flag --model=[] seperti artisan make:controller PostController --model=Post.

    Baik, sekarang kita bahas Api Resource, sebenarnya ini tidak akan jauh beda, jika kita buat Route::apiResource() maka dia akan menggenerasi 5 metode saja, tanpa create dan edit.

    routes/web.php
    Route::apiResource('articles', ArticleController::class);
    

    Kemudian, jika kita ingin generasi controllernya, jangan lupa tambahkan flag api juga seperti artisan make:controller PostController --model=Post --api.

    Route Group

    Untuk teknik ini, mungkin kalian sudah sering memakainya, karena juga biasa digunakan untuk menggroup route yang misalnya itu didalam middleware, namespace, controller, name, namespace, dll.

    routes/web.php
    Route::middleware('auth')->group(function () {
        Route::get('dashboard', DashboardController::class);
        Route::get('account/edit', [ProfileInformationController::class, 'edit']);
        Route::put('account/edit', [ProfileInformationController::class, 'update']);
        ...
    });
    
    Route::middleware('guest')->group(function () {
        Route::get('login', LoginController::class);
        Route::get('register', RegisterController::class);
        ...
    });
    

    Route Controller

    Jika Anda pernah membuat route yang berulang-ulang dengan controller yang sama, maka sekarang Anda bisa group mereka dengan cara mengkelompokkan nya dengan controller.

    # Before
    Route::get('account/edit', [AccountController::class, 'edit']);
    Route::put('account/edit', [AccountController::class, 'update']);
    Route::get('password/edit', [AccountController::class, 'editPassword']);
    Route::put('password', [AccountController::class, 'updatePassword']);
    
    # After
    Route::controller(AccountController::class)->group(function () {
        Route::get('account/edit', 'edit');
        Route::put('account/edit', 'update');
        Route::get('password/edit', 'editPassword');
        Route::put('password', 'updatePassword');
    });
    

    Active State

    Di dalam laravel, terdapat fungsi yang disebut routeIs(), method ini digunakan untuk menentukan apakah route yang sedang aktif sesuai dengan nama route tertentu. Hal ini sering digunakan dalam tampilan (views) untuk menetapkan kelas atau gaya aktif pada tautan navigasi, atau untuk menampilkan konten berdasarkan route yang aktif.

    Misalnya, jika Anda memiliki sebuah route bernama 'profile', Anda dapat menggunakan metode routeIs untuk memeriksa apakah route saat ini adalah 'profile' atau bukan.

    resources/views/navigation.blade.php
    <a href="{{ route('profile') }}" class="{{ request()->routeIs('profile') ? 'active' : '' }}">Profile</a>
    

    Metode routeIs juga mendukung wildcards, sehingga Anda bisa menentukan pola yang cocok dengan sekelompok route sekaligus. Misalnya:

    resources/views/app.blade.php
    @if(request()->routeIs('admin.*'))
        // Tampilkan konten khusus admin
    @endif
    

    routeIs adalah metode yang sangat berguna yang memungkinkan Anda menulis kode yang lebih bersih dan lebih mudah dibaca saat bekerja dengan navigasi dan tampilan yang tergantung pada route saat ini.

    Route dan Kegunaannya

    Laravel menyediakan cara yang sederhana dan ekspresif untuk mendefinisikan route dalam file khusus, seperti web.php, api.php, channels.php dan console.php. Masing-masing mempunyai tujuan yang berbeda.

    Berikut adalah daftar tentang kegunaan dari masing-masing route:

    Route Deskripsi
    web.php Digunakan untuk mendefinisikan semua route yang akan ditangani oleh aplikasi web.
    api.php Digunakan untuk mendefinisikan route API, biasanya untuk membangun RESTful API atau GraphQL API.
    channels.php Digunakan untuk mendefinisikan channel event broadcasting dalam Laravel.
    console.php Digunakan untuk mendefinisikan semua Artisan commands yang disesuaikan.

    Kesimpulan

    Semoga dengan membaca artikel ini, Anda telah memahami berbagai aspek routing dalam Laravel, termasuk penggunaan dan peran dari web.php, api.php, channels.php, dan console.php.

    Pemahaman ini akan membantu Anda dalam merancang dan mengembangkan aplikasi yang lebih terstruktur dan efisien.

    Jangan ragu untuk bereksperimen dan menggali lebih dalam, karena Laravel menawarkan fleksibilitas dan fitur yang kuat yang bisa meningkatkan produktivitas Anda sebagai developer. Selamat coding!"

    Karteil
    Destinasi Utama Belajar Online dengan Format Tulisan yang Elegan
    Kunjungi Sekarang

    Irsyad A. Panjaitan

    Let's start living like no one can help us in any event, so that when we are helped in certain times, it becomes a plus in itself.

    Follow me on
    Support me
    SaweriaGithub

    Newsletter

    Bergabunglah dengan 23.000+ lainnya dan jangan pernah ketinggalan screencast, tips, tutorial, dan lainnya.