URL Generation
Introduction
Laravel provides several helpers to assist you in generating URLs for your application. Of course, these are mainly helpful when building links in your templates and API responses, or when generating redirect responses to another part of your application.
The Basics
Generating Basic URLs
The url
helper may be used to generate arbitrary URLs for your application. The generated URL will automatically use the scheme (HTTP or HTTPS) and host from the current request:
$post = App\Post::find(1);
echo url("/posts/{$post->id}");
// http://example.com/posts/1
Accessing The Current URL
If no path is provided to the url
helper, a Illuminate\Routing\UrlGenerator
instance is returned, allowing you to access information about the current URL:
// Get the current URL without the query string...
echo url()->current();
// Get the current URL including the query string...
echo url()->full();
// Get the full URL for the previous request...
echo url()->previous();
Each of these methods may also be accessed via the URL
facade:
use Illuminate\Support\Facades\URL;
echo URL::current();
URLs For Named Routes
The route
helper may be used to generate URLs to named routes. Named routes allow you to generate URLs without being coupled to the actual URL defined on the route. Therefore, if the route's URL changes, no changes need to be made to your route
function calls. For example, imagine your application contains a route defined like the following:
Route::get('/post/{post}', function () {
//
})->name('post.show');
To generate a URL to this route, you may use the route
helper like so:
echo route('post.show', ['post' => 1]);
// http://example.com/post/1
You will often be generating URLs using the primary key of Eloquent models. For this reason, you may pass Eloquent models as parameter values. The route
helper will automatically extract the model's primary key:
echo route('post.show', ['post' => $post]);