Класс URL
Класс URL в Laravel используется для генерации
URL-адресов, создания ссылок на маршруты и действия
контроллеров. Он предоставляет статические методы
для построения полных URL с учётом текущего контекста
запроса. Первым параметром в большинство методов
передаётся имя маршрута или путь, вторым - параметры
для подстановки.
Синтаксис
<?php
use Illuminate\Support\Facades\URL;
URL::to($path, $parameters, $secure);
URL::route($name, $parameters, $absolute);
URL::action($action, $parameters, $absolute);
URL::current();
URL::full();
URL::previous();
?>
Пример
Давайте сгенерируем абсолютный URL для пути внутри приложения:
<?php
use Illuminate\Support\Facades\URL;
$res = URL::to('/articles');
echo $res;
?>
Результат выполнения кода:
"http://example.com/articles"
Пример
Сгенерируем URL с дополнительными параметрами запроса:
<?php
use Illuminate\Support\Facades\URL;
$res = URL::to('/articles', ['page' => 2, 'sort' => 'desc']);
echo $res;
?>
Результат выполнения кода:
"http://example.com/articles?page=2&sort=desc"
Пример
Сгенерируем URL по имени маршрута с параметром:
<?php
use Illuminate\Support\Facades\Route;
Route::get('/user/{id}', function ($id) {
return 'User ' . $id;
})->name('user.show');
?>
<?php
use Illuminate\Support\Facades\URL;
$res = URL::route('user.show', ['id' => 5]);
echo $res;
?>
Результат выполнения кода:
"http://example.com/user/5"
Пример
Сгенерируем URL для действия контроллера:
<?php
namespace App\Http\Controllers;
class ArticleController extends Controller
{
public function show($id)
{
return 'Article ' . $id;
}
}
?>
<?php
use Illuminate\Support\Facades\URL;
use App\Http\Controllers\ArticleController;
$res = URL::action([ArticleController::class, 'show'], ['id' => 10]);
echo $res;
?>
Результат выполнения кода:
"http://example.com/article/10"
Пример
Получим текущий полный URL с параметрами запроса:
<?php
use Illuminate\Support\Facades\URL;
$res = URL::full();
echo $res;
?>
Результат выполнения кода:
"http://example.com/articles?page=1&category=tech"
Пример
Используем метод для проверки подписанного URL:
<?php
use Illuminate\Support\Facades\URL;
$signedUrl = URL::temporarySignedRoute(
'user.verify',
now()->addMinutes(30),
['user' => 1]
);
echo $signedUrl;
$isValid = URL::hasValidSignature($signedUrl);
var_dump($isValid);
?>
Результат выполнения кода:
"http://example.com/user/1/verify?expires=1234567890&signature=abcdef"
"bool(true)"
Смотрите также
-
функция
route,
которая генерирует URL по имени маршрута -
функция
url,
которая генерирует URL для указанного пути -
функция
action,
которая генерирует URL для контроллера -
метод
signedRoute,
который создаёт подписанный URL