Route Key Model Binding

Dulunya, mungkin ini sangat repot, kita harus definisikan key apa yang ingin kita jadikan wildcardnya seperti berikut.

1 min read

Published on 11 Aug, 2021 (updated: 28 Sep, 2022)

Written by Irsyad A. Panjaitan

Fill in Laravel

ArticlesRoute Key Model Binding

Dulunya mungkin ini sangat repot, kita harus definisikan key apa yang ingin kita jadikan wildcardnya seperti berikut.

public function getRouteKeyName() { return 'slug'; // the key }
phpCopy

Tapi sekarang, tidak perlu. Kita hanya perlu membuat seperti berikut.

Route::get('posts/{post:slug}', '[email protected]');
phpCopy

Kemudian, ketika kita ingin tambah parameter seperti subjek / kategori, kita hanya perlu menambahkannya seperti berikut.

Route::get('posts/{category:slug}/{post:slug}', '[email protected]');
phpCopy

Dulu yang kita lakukan adalah mendefinisikan nama key disetiap model yang ada, begitupun, tetap aja walau salah kategorinya tapi post slug nya benar, tetap bisa di akses. Atau kalau mau, terpaksa kita buat seperti ini.

Route::get('posts/{category}/{postSlug}', '[email protected]');
phpCopy

Dan kemudian, kita cek apakah id kategori = id kategory yang ada di tabel posts seperti berikut.

public function show(Category $category, $postSlug) { $post = Post::where('category_id', $category->id)->where('slug', $postSlug)->first(); return $post; }
phpCopy

Namun sekerang itu tidak perlu, jadi bagaimana ? Well, It's very simple.

public function show(Category $category, Post $post) { return $post; }
phpCopy

Maka, jika Anda mencoba membuat salah kategorinya, maka akan otomatis post akan tidak ditemukan.

That's it for today.

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.
0

Share on