Метод url
Метод url класса Request возвращает полный URL
текущего запроса без параметров строки запроса.
Он не учитывает GET-параметры, возвращая только путь
до ресурса с протоколом и доменом. Метод часто
используется для формирования ссылок, редиректов
или логирования входящих запросов.
Синтаксис
<?php
request()->url();
// или через фасад
use Illuminate\Support\Facades\Request;
Request::url();
// или через внедрение зависимостей
use Illuminate\Http\Request;
public function index(Request $request)
{
$url = $request->url();
}
?>
Пример
Давайте получим URL текущего запроса в контроллере:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function show(Request $request)
{
$res = $request->url();
echo $res;
}
}
?>
Если текущий запрос был отправлен на URL
https://example.com/users/5
url вернёт этот же адрес:
"https://example.com/users/5"
Пример
Посмотрим разницу между методом url и полным
URL с GET-параметрами. Для этого отправим запрос
с параметрами:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ArticleController extends Controller
{
public function index(Request $request)
{
$url = $request->url();
$fullUrl = $request->fullUrl();
echo "URL: " . $url . "\n";
echo "Full URL: " . $fullUrl;
}
}
?>
При запросе на адрес
https://example.com/articles?page=2&sort=desc
"URL: https://example.com/articles"
"Full URL: https://example.com/articles?page=2&sort=desc"
Пример
Используем метод url в маршруте для
перенаправления пользователя:
<?php
use Illuminate\Support\Facades\Route;
use Illuminate\Http\Request;
Route::get('/profile', function (Request $request) {
$res = $request->url();
if (str_contains($res, '/admin')) {
return redirect('/dashboard');
}
return view('profile');
});
?>
Если текущий URL содержит '/admin', произойдёт редирект на '/dashboard':
// при запросе на https://example.com/admin/profile
"Redirecting to /dashboard"