mtymek / blast-base-url
PSR-7 中间件和辅助工具,用于处理基础 URL。
Requires
- php: ^7.0
- psr/http-message: ^1.0
- psr/http-server-handler: ^1.0
- psr/http-server-middleware: ^1.0
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-09 05:27:38 UTC
README
此包检测 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" />