tomrf/htmx-message

PHP PSR-7 代理类,提供 htmx 请求和响应的便捷方法

1.2.1 2023-11-10 13:23 UTC

This package is auto-updated.

Last update: 2024-09-10 14:59:01 UTC


README

PHP Version Require Latest Stable Version License

PSR-7 ServerRequestInterfaceResponseInterface 代理类,用于 htmx,提供请求和响应对象中所有特殊 htmx 头信息(HX-*)的便捷方法。

HtmxResponse 是一个实现了 \Psr\Http\Message\ResponseInterface 的 PSR-7 响应对象的代理。

HtmxServerRequest 是一个实现了 \Psr\Http\Message\ServerRequestInterface 的 PSR-7 服务器请求对象的代理。

您可以将任何 ResponseInterfaceServerRequestInterface 对象安全地包装起来,包括那些不是来自 htmx 的对象,而不会影响您的应用程序。

HtmxResponseHtmxServerRequest 对象以与预期从 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::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