Categories: Development

Using a slug as the route key in Laravel

Use pretty URLs for your Laravel project by implementing slugs and avoid the integer id as the route key.

The following 2 URL examples are for the route

/location/{location}

This first one is the default where the route key is the id

domain.com/location/34

It’s not a good practice for SEO nor is it human readable.

Instead of this you can use a “slug” for the location title. A slug is a string that is URL safe with dashes instead of spaces.

Los Angeles has a slug of los-angeles, whilst North Las Vegas has a slug north-las-vegas

This second URL is using the slug as the route key

domain.com/location/los-angeles

You do this by customizing the key with getRouteKeyName function in the models class

public function getRouteKeyName(): string
{
    return 'slug';
}

It is returning “slug” because that is the database column I want the route key to be.

If the slug isn’t found then an HTTP 404 error will be thrown.

 

Share

Recent Posts

Kennington reservoir drained drone images

A drained and empty Kennington reservoir images from a drone in early July 2024. The…

2 years ago

Merrimu Reservoir drone images

Merrimu Reservoir from drone. Click images to view larger.

2 years ago

Early September spring shots

Some early September spring shots from a bushwalk, It is still too early for wildflowers.

3 years ago

Cloning an NVMe to SK Hynix Platinum P41 NVMe

I recently needed to clone over a smaller NVMe to a 2TB SK Hynix Platinum…

3 years ago

Using Laravel’s deleteDirectory to delete folders and their contents

If you ever needed a simple solution in Laravel to delete an entire directory and…

3 years ago

How to allow only 1 user to register in a Laravel application

How to enforce only one user to register or be registered in a Laravel web…

3 years ago