Basic Laravel Question - URL to Route to Controller to View

Updated: Feb 22, 2025

Basic Laravel Question - URL to Route to Controller to View

Question: I have a Laravel application and I have a route defined in routes/web.php file as follows:

Route::get('/posts/{post}/edit', 'PostController@edit');

I want to create a link in my resources/views/posts/show.blade.php file to go to the edit page for a post. How do I generate the URL for this route?

Answer: In Laravel, you can generate URLs for routes using the url helper function. To generate the URL for the edit route of a post, you can use the following syntax in your show.blade.php file:

<a href="{{ url('/posts/' . $post->id . '/edit') }}">Edit</a>

Here, $post is an instance of the Post model that contains the ID of the post. The url helper function takes the route name or the URI as its first argument and any additional parameters as its second argument. In this case, we are providing the URI directly, so we need to concatenate the route parameters using the dot (.) operator.

Alternatively, you can also use the route helper function to generate the URL for a named route:

<a href="{{ route('post.edit', ['id' => $post->id]) }}">Edit</a>

Here, post.edit is the name of the route defined in the routes/web.php file. The array ['id' => $post->id] contains the route parameters. The route helper function will automatically generate the URL based on the defined route and its parameters.

Both methods will generate the same URL, but using the named route can make your code more readable and easier to maintain if you have many routes in your application.