guidofaecke/blast-base-url

PSR-7 中间件和助手,用于处理基本 URL。

2.3.1 2024-06-11 22:37 UTC

README

这只是 mtymek/blast-base-url 的另一个分支...并不完全是这样!mtymek/blast-base-url 的发展似乎在 2019 年停止了,所以这里是我们的做法,去掉冗余,回归 PHP7.4 - 8.1

该软件包检测 Web 应用的基本 URL。当您需要应用程序从子目录(如 https:///my-project/public)提供服务时,这很有用。这在某些情况下可能很有用,尤其是在开发环境中。

该软件包还提供了处理资源的助手。

检测逻辑基于 laminas-http 软件包。

安装

支持使用 Composer 进行安装

$ composer require guidofaecke/blast-base-url

如果存在 Zend Component Installer,它将自动更新应用程序配置。

用法

为了简单起见,以下说明针对基于 Mezzio 模板 的应用程序,假设已选择 laminas/laminas-servicemanager 作为 DI 容器。

Blast\BaseUrl 基于 PSR-7,因此它将很好地与其他框架/分发器(如 Slim3 或 Relay)一起工作,只是连接过程将有所不同。

基本 URL 中间件

BaseUrlMiddleware 添加到您的管道中,在路由中间件之前(config/pipeline.php 文件)

// ...
$app->pipe(\Blast\BaseUrl\BaseUrlMiddleware::class);

// ...
$app->pipe(RouteMiddleware::class);

BaseUrlMiddleware 将更改请求 URI 中的路径,删除基本 URL。这意味着即使您从 http:/localhost/~user/project/public/index.php/foo/bar 访问您的项目,管道中的下一个中间件也将路径视为 /foo/bar

此外,将添加两个属性到 ServerRequest,分别包含基本 URL 和基本路径

echo $request->getAttribute(BaseUrlMiddleware::BASE_URL);   
// outputs: /some/subdirectory/index.php

echo $request->getAttribute(BaseUrlMiddleware::BASE_PATH);
// outputs: /some/subdirectory/

生成 URL

BaseUrlMiddleware 可以自动配置 UrlHelper,以便所有由该助手生成的 URL 都具有适当的前缀。如果服务容器中存在 UrlHelper,则将自动执行此操作。

访问资产 - 基本路径

该软件包提供的另一个功能是基本路径助手。它可以用来生成在子目录下正确工作的资产文件的 URL。

如果存在 BasePathHelper,则 BaseUrlMiddleware 将在执行期间自动配置它。

Zend 视图

您可以在 zend-view 模板中使用以下语法

<link rel="stylesheet" href="<?= $this->basePath('/css/style.css') ?>" />

根据您的应用程序目录,它将产生类似的结果

<link rel="stylesheet" href="/public_html/my-project/public/css/style.css" />

Twig

您可以在 twig 模板中使用以下语法

<link rel="stylesheet" href="{{ basePath('/css/style.css') }}" />

根据您的应用程序目录,它将产生类似的结果

<link rel="stylesheet" href="/public_html/my-project/public/css/style.css" />