tomrf / htmx-message
PHP PSR-7 代理类,提供 htmx 请求和响应的便捷方法
Requires
- php: ^8.0
- psr/http-message: ^1.0
Requires (Dev)
- bmitch/churn-php: ^1.7
- friendsofphp/php-cs-fixer: ^3.17
- nyholm/psr7: ^1.8
- nyholm/psr7-server: ^1.0
- phpmd/phpmd: ^2.12
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.1
- roave/security-advisories: dev-latest
- tomrf/http-emitter: ^0.0
- tomrf/readme-gen: ^0.0
README
PSR-7 ServerRequestInterface
和 ResponseInterface
代理类,用于 htmx
,提供请求和响应对象中所有特殊 htmx 头信息(HX-*
)的便捷方法。
HtmxResponse
是一个实现了 \Psr\Http\Message\ResponseInterface
的 PSR-7 响应对象的代理。
HtmxServerRequest
是一个实现了 \Psr\Http\Message\ServerRequestInterface
的 PSR-7 服务器请求对象的代理。
您可以将任何 ResponseInterface
或 ServerRequestInterface
对象安全地包装起来,包括那些不是来自 htmx
的对象,而不会影响您的应用程序。
HtmxResponse
和 HtmxServerRequest
对象以与预期从 PSR-7 MessageInterface
相同的方式保持不可变性,每当修改 HtmxResponse
时,都会返回一个包含新的 ResponseInterface
实例的新对象。
符合截至 2023-08-01 的 htmx
版本 1.9.x(最新版本)。
📔 前往文档
安装
通过 composer 安装
composer require tomrf/htmx-message
使用方法
$request = new HtmxRequest($request); // PSR-7 `ServerRequestInterface` if ($request->isHxRequest() && $request->isHxBoosted()) { $layout = 'ajax.layout'; } [...] $response = new HtmxResponse($response); // PSR-7 `ResponseInterface` $response = $response->withHxTrigger('aSimpleTrigger') ->withAddedHxTrigger('triggerWithParams', ['arg' => true, 'arg2' => 7]) ->withTriggerAfterSwap('afterSwap', time()) ->withHxPush($newUrl); // Emit $response as normal [...]
测试
composer test
许可证
本项目采用 MIT 许可证(MIT)发布。有关更多信息,请参阅 LICENSE。
文档
- Tomrf\HtmxMessage\HtmxResponse
- getHxPush
- getHxRedirect
- getHxRetarget
- getHxTrigger
- getHxTriggerAfterSettle
- getHxTriggerAfterSwap
- hasHxPush
- hasHxRedirect
- hasHxRefresh
- hasHxRetarget
- hasHxTrigger
- hasHxTriggerAfterSettle
- hasHxTriggerAfterSwap
- withAddedHxTrigger
- withAddedHxTriggerAfterSettle
- withAddedHxTriggerAfterSwap
- withHxPush
- withHxRedirect
- withHxRefresh
- withHxRetarget
- withHxTrigger
- withHxTriggerAfterSettle
- withHxTriggerAfterSwap
- withoutHxPush
- withoutHxRedirect
- withoutHxRefresh
- withoutHxRetarget
- withoutHxTrigger
- withoutHxTriggerAfterSettle
- withoutHxTriggerAfterSwap
- Tomrf\HtmxMessage\HtmxServerRequest
📂 Tomrf\HtmxMessage\HtmxResponse::class
HtmxResponse 是一个实现了 \Psr\Http\Message\ResponseInterface 的 PSR-7 响应对象的代理。
您可以将任何 ResponseInterface 对象安全地包装起来,包括那些不响应 htmx 请求的对象,而不会影响您的应用程序。
HtmxResponse 对象以与预期从 PSR-7 MessageInterface 相同的方式保持不可变性,每当修改 HtmxResponse 时,都会返回一个包含新的 ResponseInterface 实例的新对象。
示例
$response = new HtmxResponse($response);
$response = $response->withHxTrigger('myTrigger')
->withRedirect('/user/redirected')
->withHxPush(false);
// ...
getHxPush()
public function getHxPush(): string
getHxRedirect()
public function getHxRedirect(): string
getHxRetarget()
public function getHxRetarget(): string
getHxTrigger()
public function getHxTrigger(): array @return array
getHxTriggerAfterSettle()
public function getHxTriggerAfterSettle(): array @return array
getHxTriggerAfterSwap()
public function getHxTriggerAfterSwap(): array @return array
hasHxPush()
public function hasHxPush(): bool
hasHxRedirect()
public function hasHxRedirect(): bool
hasHxRefresh()
public function hasHxRefresh(): bool
hasHxRetarget()
public function hasHxRetarget(): bool
hasHxTrigger()
public function hasHxTrigger(): bool
hasHxTriggerAfterSettle()
public function hasHxTriggerAfterSettle(): bool
hasHxTriggerAfterSwap()
public function hasHxTriggerAfterSwap(): bool
withAddedHxTrigger()
public function withAddedHxTrigger( string $trigger, mixed $argument = null ): static
withAddedHxTriggerAfterSettle()
public function withAddedHxTriggerAfterSettle( string $trigger, mixed $argument = null ): static
withAddedHxTriggerAfterSwap()
public function withAddedHxTriggerAfterSwap( string $trigger, mixed $argument = null ): static
withHxPush()
public function withHxPush( string|bool $url ): static
withHxRedirect()
public function withHxRedirect( string $url ): static
withHxRefresh()
public function withHxRefresh(): static
withHxRetarget()
public function withHxRetarget( string $selector ): static
withHxTrigger()
public function withHxTrigger( string $trigger, mixed $argument = null ): static
withHxTriggerAfterSettle()
public function withHxTriggerAfterSettle( string $trigger, mixed $argument = null ): static
withHxTriggerAfterSwap()
public function withHxTriggerAfterSwap( string $trigger, mixed $argument = null ): static
withoutHxPush()
public function withoutHxPush(): static
withoutHxRedirect()
public function withoutHxRedirect(): static
withoutHxRefresh()
public function withoutHxRefresh(): static
withoutHxRetarget()
public function withoutHxRetarget(): static
withoutHxTrigger()
public function withoutHxTrigger(): static
withoutHxTriggerAfterSettle()
public function withoutHxTriggerAfterSettle(): static
withoutHxTriggerAfterSwap()
public function withoutHxTriggerAfterSwap(): static
📂 Tomrf\HtmxMessage\HtmxServerRequest::class
HtmxServerRequest 是 PSR-7 服务器请求对象的代理,实现了 \Psr\Http\Message\ServerRequestInterface。
您可以为任何 ServerRequestInterface 对象进行封装,包括非 htmx 生成的对象,而不会影响您的应用程序。
使用 isHxRequest() 方法检查请求是否来自 htmx。
HtmxServerRequest 对象以与 PSR-7 MessageInterface 预期相同的方式保持不可变性,在更改 HtmxServerRequest 时返回一个新的对象,该对象封装了新的 ServerRequestInterface 实例。
示例
$request = new HtmxServerRequest($request);
if ($request->isHxRequest() && $request->isHxBoosted()) {
// htmx request from boosted client, respond accordingly
}
$userPrompt = $request->getHxPrompt();
// ...
getHxCurrentUrl()
public function getHxCurrentUrl(): string
getHxPrompt()
public function getHxPrompt(): string
getHxTarget()
public function getHxTarget(): string
getHxTrigger()
public function getHxTrigger(): string
getHxTriggerName()
public function getHxTriggerName(): string
hasHxPrompt()
public function hasHxPrompt(): bool
hasHxTarget()
public function hasHxTarget(): bool
hasHxTrigger()
public function hasHxTrigger(): bool
hasHxTriggerName()
public function hasHxTriggerName(): bool
isHxBoosted()
public function isHxBoosted(): bool
isHxHistoryRestoreRequest()
public function isHxHistoryRestoreRequest(): bool
isHxRequest()
public function isHxRequest(): bool
__construct()
public function __construct( Psr\Http\Message\ServerRequestInterface $message ): void
生成于 2023-08-18T12:46:49+00:00,使用 📚tomrf/readme-gen