PSR-7 ServerRequestInterface and ResponseInterface proxy classes for htmx
with convenience methods for all special htmx headers (HX-*) in request and
response objects.
HtmxResponse is a proxy for PSR-7 response objects implementing \Psr\Http\Message\ResponseInterface.
HtmxServerRequest is a proxy for PSR-7 server request objects implementing \Psr\Http\Message\ServerRequestInterface.
You can safely wrap any ResponseInterface or ServerRequestInterface object, also those not originating from htmx, without affecting your application.
HtmxResponse and HtmxServerRequest objects retains immutability in the same fashion as one would expect from a PSR-7 MessageInterface, returning a new object wrapping a new ResponseInterface instance whenever the HtmxResponse is changed.
Conforms to htmx version 1.9.x (latest) as per 2023-08-01.
π Go to documentation
Installation via 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 testThis project is released under the MIT License (MIT). See LICENSE for more information.
- 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
HtmxResponse is a proxy for PSR-7 response objects implementing \Psr\Http\Message\ResponseInterface.
You can safely wrap any ResponseInterface object, also those not responding to a htmx request, without affecting your application.
HtmxResponse objects retains immutability in the same fashion as one would expect from a PSR-7 MessageInterface, returning a new object wrapping a new ResponseInterface instance whenever the HtmxResponse is changed.
Example:
$response = new HtmxResponse($response);
$response = $response->withHxTrigger('myTrigger')
->withRedirect('/user/redirected')
->withHxPush(false);
// ...
public function getHxPush(): stringpublic function getHxRedirect(): stringpublic function getHxRetarget(): stringpublic function getHxTrigger(): array
@return arraypublic function getHxTriggerAfterSettle(): array
@return arraypublic function getHxTriggerAfterSwap(): array
@return arraypublic function hasHxPush(): boolpublic function hasHxRedirect(): boolpublic function hasHxRefresh(): boolpublic function hasHxRetarget(): boolpublic function hasHxTrigger(): boolpublic function hasHxTriggerAfterSettle(): boolpublic function hasHxTriggerAfterSwap(): boolpublic function withAddedHxTrigger(
string $trigger,
mixed $argument = null
): staticpublic function withAddedHxTriggerAfterSettle(
string $trigger,
mixed $argument = null
): staticpublic function withAddedHxTriggerAfterSwap(
string $trigger,
mixed $argument = null
): staticpublic function withHxPush(
string|bool $url
): staticpublic function withHxRedirect(
string $url
): staticpublic function withHxRefresh(): staticpublic function withHxRetarget(
string $selector
): staticpublic function withHxTrigger(
string $trigger,
mixed $argument = null
): staticpublic function withHxTriggerAfterSettle(
string $trigger,
mixed $argument = null
): staticpublic function withHxTriggerAfterSwap(
string $trigger,
mixed $argument = null
): staticpublic function withoutHxPush(): staticpublic function withoutHxRedirect(): staticpublic function withoutHxRefresh(): staticpublic function withoutHxRetarget(): staticpublic function withoutHxTrigger(): staticpublic function withoutHxTriggerAfterSettle(): staticpublic function withoutHxTriggerAfterSwap(): staticHtmxServerRequest is a proxy for PSR-7 server request objects implementing \Psr\Http\Message\ServerRequestInterface.
You can safely wrap any ServerRequestInterface object, also those not originating from htmx, without affecting your application.
Check if the request originated from htmx using the isHxRequest() method.
HtmxServerRequest objects retains immutability in the same fashion as one would expect from a PSR-7 MessageInterface, returning a new object wrapping a new ServerRequestInterface instance whenever the HtmxServerRequest is changed.
Example:
$request = new HtmxServerRequest($request);
if ($request->isHxRequest() && $request->isHxBoosted()) {
// htmx request from boosted client, respond accordingly
}
$userPrompt = $request->getHxPrompt();
// ...
public function getHxCurrentUrl(): stringpublic function getHxPrompt(): stringpublic function getHxTarget(): stringpublic function getHxTrigger(): stringpublic function getHxTriggerName(): stringpublic function hasHxPrompt(): boolpublic function hasHxTarget(): boolpublic function hasHxTrigger(): boolpublic function hasHxTriggerName(): boolpublic function isHxBoosted(): boolpublic function isHxHistoryRestoreRequest(): boolpublic function isHxRequest(): boolpublic function __construct(
Psr\Http\Message\ServerRequestInterface $message
): voidGenerated 2023-08-18T12:46:49+00:00 using πtomrf/readme-gen