nkondrashov / yii3-htmx
Yii 框架的 htmx 扩展
0.2
2024-02-24 23:10 UTC
Requires
- php: ^8.1
- yiisoft/arrays: ^1.0|^2.0|^3.0
- yiisoft/assets: ^4.0
- yiisoft/files: ^2.0
- yiisoft/html: ^3.0
- yiisoft/json: ^1.0
README
Yii3 框架 htmx 简单扩展
此 Yii 框架 扩展封装了基本功能 [htmx],使在 Yii 应用程序中使用它变得极其简单。
您可以在 yii3-demo-htmx 应用程序中查看示例。
安装
- 通过 composer 安装此扩展是首选方式。
php composer.phar require nkondrashov/yii3-htmx "^0.2"
- 将
HTMXMiddleware.php
添加到路由器。
->middleware(HTMXMiddleware::class)
- 在主布局或
AppAsset
中注册资产
$assetManager->register(HTMXAsset::class);
警告!
- 对于成功的 POST 请求,将以下属性添加到
<body>
标签:hx-headers='{"X-CSRF-Token":"<?=$csrf; ?>"}'
。例如:
<body hx-headers='{"X-CSRF-Token":"<?=$csrf; ?>"}'>
安装资产
使用 npm-asset 包管理器。
在应用程序根目录下运行以下命令。
npm i htmx.org@1.9.10
通用用法
示例
简单
<?php $tag = Yiisoft\Html\Html::button('[ X ]']); $htmx = HTMX::make($tag) ->request(Yiisoft\Http\Method::DELETE, '/item/delete/' . $todo->id) ->setSwap('none') ->runOnClick(); if (!$todo->is_complete) { $htmx->addConfirm('Are you sure?'); } echo $htmx; ?>
<?= HTMX::make(Yiisoft\Html\Html::tag('div')) ->request(Yiisoft\Http\Method::GET, '/item/index') ->runOnCustomEvent('someCustomEvent', 'someCustomEvent2') ->runOnLoad();?>
更原生
<?php $tag = Yiisoft\Html\Html::button('[ X ]']); $htmx = HTMX::make($tag) ->request(Yiisoft\Http\Method::DELETE, '/item/delete/' . $todo->id) ->addTriggers('click') ->setSwap('none'); if (!$todo->is_complete) { $htmx->addConfirm('Are you sure?'); } echo $htmx; ?>
<?= HTMX::make(Yiisoft\Html\Html::tag('div')) ->request(Yiisoft\Http\Method::GET, '/item/index') ->addTriggers('load','someCustomEvent from:body', 'someCustomEvent2 from:body'); ?>
最原生
<?php $tag = Yiisoft\Html\Html::button('[ X ]']); $htmx = HTMX::make($tag) ->setHx('delete', '/item/delete/' . $todo->id) ->setHx('trigger', 'click') ->setHx('swap', 'none'); if (!$todo->is_complete) { $htmx->setHx('conf', 'Are you sure?'); } echo $htmx; ?>
<?= HTMX::make(Yiisoft\Html\Html::tag('div')) ->setHx('get', '/item/index') ->setHx('trigger', 'load, someCustomEvent from:body, someCustomEvent2 from:body'); ?>
在响应中发送 htmx 头部
//Definition: ... public function __construct(private HTMXHeaderManager $headerManager) {} ... //In code: $this->headerManager->triggerCustomEventAfterSwap('updateList'); //or native: $this->headerManager->sendHXHeader('Trigger', 'updateList'); //Detect htmx request: if ($this->headerManager->isHtmxRequest()) { //Example: This request without htmx header } //Get data from header: $value = $this->headerManager->getRequestHeader('Hx-Trigger-Name');
支持 Yii3 项目
关注 Yii3 更新
许可
Yii 框架 htmx 扩展是免费软件。它根据 BSD 许可协议发布。请参阅 LICENSE
获取更多信息。
此包由我维护 ¯_(ツ)_/¯