mtymek/blast-base-url

PSR-7 中间件和辅助工具,用于处理基础 URL。

1.0.0 2018-05-15 14:41 UTC

This package is auto-updated.

Last update: 2024-09-09 05:27:38 UTC


README

Build Status

此包检测 Web 应用程序的基础 URL。当您需要应用程序从子目录(如 http://localhost/my-project/public)提供服务时,这很有用。这有时可能很有用,尤其是在开发环境中。

该包还提供了处理资源的辅助工具。

检测逻辑基于 zend-http 包。

安装

支持使用 Composer 安装

$ composer require mtymek/blast-base-url

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

用法

为了简单起见,以下说明针对基于 Zend Expressive Skeleton 的应用程序,假设 Zend\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,这些 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" />