Laravel обеспечивает создание URL для контроллеров вашего приложения, потому что он знает о ваших маршрутах и о том, как они построены, чтобы Laravel работал.
Laravel не обеспечивает создание общего URL-адреса, потому что он ошибается на стороне KISS: не все приложения должны создавать внешний URL-адрес.Некоторые приложения не требуют внешних ссылок.Некоторые требуют только статические ссылки.Другим, вроде бы вашим, нужно создавать URI для приложений.
Вы можете использовать внешний пакет, например spatie/url
или phpleague/uri
(который может справиться с IRI), или любой другой - независимо от того, соответствуют ли они PSR-7 или нет.Вы также можете сделать свой собственный ролик:
function build_external_url(string $host, string $path = null, array $query = [], string $schema = null, int $port = null): string
{
$url = $host;
if (null !== $port) {
$url .= ':' . $port;
}
if (null !== $path) {
$url .= '/' . ltrim($path, '/');
}
if (! empty($query)) {
$url .= '?' . http_build_query($query);
}
return (null === $schema ? $url : ($schema . '://' . $url));
}
Смотрите его в прямом эфире на 3v4l.org.