Tanggal :26 September 2022
Laravel 9

Apa Yang Baru di Laravel 9 ?

Assalamualaikum Warohmatulloh Wabarokatuh, kemarin Laravel akhirnya merilis Laravel 9. Setelah melewati versi paling panjang dari Laravel yaitu Laravel 8 yang berusia sekitar 18 bulan. Lalu apa yang baru di Laravel 9? Banyak kah?

Oke, tulisan ini mungkin juga akan menjawab kawan-kawan yang sedang belajar Laravel dari versi sebelumnya entah 8 atau 7. Jadi begini seringkali di Forum terjadi pertanyaan atau statemen “Baru aja belajar Laravel X udah rilis baru Laravel Y”. Ini yang perlu banget diluruskan dan diperjelas atau harusnya lebih rajin baca dokumentasi 😛 biar ga komen gini lagi.

Sedikit cerita dari pengalaman saya yang mulai menggunakan Laravel dari versi 5 sampai sekarang dari pembaruan Laravel sedikit sekali yang mengharuskan kalian untuk belajar ulang. Kebanyakan dari semua sintaks dasar di Laravel tidak berubah dan lebih banyaknya adalah penambahan fitur baru. Kecuali untuk kasus starter kit untuk autentikasi yang memang sering mengalami perubahan.

Peningkatan Pada Aksesor & Mutator

Laravel 9 menawarkan cara baru untuk menuliskan accessor / mutators. Sebelumnya cara mendefinisikannya dengan membuat method dengan prefix

public function getNameAttribute($value)
{
    return strtoupper($value);
}
 
public function setNameAttribute($value)
{
    $this->attributes['name'] = $value;
}

Akan tetapi pada Laravel 9 kita bisa mendefinisikannya dengan satu method saja tanpa prefix dengan type-hint return typenya.

use Illuminate\Database\Eloquent\Casts\Attribute;
 
public function name(): Attribute
{
    return new Attribute(
        get: fn ($value) => strtoupper($value),
        set: fn ($value) => $value,
    );
}

Checked / Selected Blade Directive

Dengan @checked directive akan memudahkan kita untuk mengindikasikan atribut HTML itu “checked“.

<input type="checkbox"
        name="active"
        value="active"
        @checked(old('active', $user->active)) />

Tidak jauh berbeda @selected berguna untuk mengindikasikan bahwa opsi selectnya harusnya “selected“.

<select name="version">
    @foreach ($product->versions as $version)
        <option value="{{ $version }}" @selected(old('version') == $version)>
            {{ $version }}
        </option>
    @endforeach
</select>

Peningkatan output CLI route:list

Pada Laravel 9 hasil cetakan dari php artisan route:list mengalami banyak peningkatan, tampilannya seperti ini kira-kira.

Yang baru di Laravel 9

Tampilan Pagination Bootstrap 5

Sekarang Laravel menyertakan tampilan Bootstrap 5 untuk paginationnya. Bawaannya tetap menggunakan TailwindCss kalau ingin menggunakan Boostrap 5 dapat kita definisikan pada method boot() dalam Class App\Providers\AppServiceProvider.

use Illuminate\Pagination\Paginator;
 
/**
 * Bootstrap any application services.
 *
 * @return void
 */
public function boot()
{
    Paginator::useBootstrapFive();
}

Shorcut penulisan Nama Slot

Pada rilis Laravel sebelumnya untuk menulis nama slot menggunakan atribut name pada tag x-slot.

<x-alert>
    <x-slot name="title">
        Server Error
    </x-slot>
 
    <strong>Whoops!</strong> Something went wrong!
</x-alert>

Tetapi sejak Laravel 9, kita bisa menulis dengan sintaks yang lebih pendek & elegan

<x-slot:title>
    Server Error
</x-slot>

Route Group Controller

Sekarang kita bisa membuat grup route dari Controller dengan route group seperti biasanya. Kemudian untuk mendefinisikan routenya kita cukup tuliskan nama methodnya.

use App\Http\Controllers\OrderController;
 
Route::controller(OrderController::class)->group(function () {
    Route::get('/orders/{id}', 'show');
    Route::post('/orders', 'store');
});

Mungkin itu sekilas apa aja yang baru pad Laravel 9 yang perlu diketahui, yang sebenarnya nggak mengubah sintaks yang sudah ada. Jadi berhenti mengeluh gara-gara versi baru Laravel rilis.

Wassalamualaikum Warohmatulloh Wabarokatuh.

Hai semua, saya Amirul seorang Software Engineer, suka membuat konten pembelajaran berupa artikel, video tutorial maupun podcast

One Comment

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan.