php - 在 Laravel 中构建一个外部 URL
问题描述
Laravel 有一些优秀的路由处理类/方法。其中之一是Illuminate\Routing\UrlGenerator
类,它能够处理与应用程序中的路由相关的各种复杂 URL 生成。
我一直无法找到任何类型的辅助方法来构造外部 URL 字符串,类似于UrlGenerator
'sto()
方法的工作原理(获取路径和任何额外的查询参数。)外部 URL 的示例是带有一个基本主机,以及一些额外的参数,例如:https ://www.youtube.com/watch?v=mDotS5BDqRM
Laravel 中是否有任何东西可以帮助我构建类似于该to()
方法的外部 URL?我不是在问如何手动连接一个字符串来创建一个 URL,也不是直接format()
在UrlGenerator
.
谢谢!
解决方案
Laravel 为您的应用程序的控制器提供 URL 构建,因为它知道您的路由以及如何构建这些路由以使 Laravel 工作。
Laravel 不提供通用 URL 构建,因为它在 KISS 方面犯了错误:并非所有应用程序都需要构建外部 URL。有些应用程序不需要外部链接。有些只需要静态链接。其他人,看起来像你的,需要以特定于应用程序的方式构建 URI。
您可以使用外部包,如spatie/url
, or 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));
}
推荐阅读
- xml - XSD - 在 XML 模式中使元素成为可选和强制
- azure-functions - 如何在 Azure Function App 中禁用只读模式?
- arrays - VBA - 无意中在数组中创建数组
- android - 如何修复无法解决“de.hdodenhof:circleimageview:2.2.0”的依赖关系。
- sql - 在非唯一条目上加入 SQL 查询
- sql-server - SQL CASE 单一答案是或否
- python - 从python中的模板生成yaml文件
- perl - 如何使用 -0 选项在 Perl 中读取固定宽度的记录?
- ios - 使用 UIPickerView Swift 传递的数据不正确
- logging - xamarin.android 应用程序立即打开和关闭