用途:在 Drupal 11.3+ 中实现 HTMX,并把现有 AJAX 迁移到 HTMX,适用于动态内容更新、依赖字段表单、无限滚动、加载更多和实时校验。传统 AJAX 维护不适用。
主要能力:用 Htmx 类为渲染元素附加 HTMX 行为,支持 get()/post()/put()/patch()/delete() 请求方法,target()、select()、swap()、swapOob()、trigger()、vals()、onlyMainContent() 等控制方法,以及 pushUrlHeader()、redirectHeader()、triggerHeader()、reswapHeader()、retargetHeader() 等响应头方法,通过 applyTo() 应用到元素。控制器返回渲染数组,并在路由选项加 _htmx_route: TRUE。表单自带 HtmxRequestInfoTrait,控制器可手动加入后用 isHtmxRequest()、getHtmxTriggerName() 检测请求。常见模式包括依赖下拉、加载更多、无限滚动、实时校验、多步向导和多处更新(OOB)。
使用方式:基础用法见 Quick Start,例如用 (new Htmx())->get(Url::fromRoute('my.content'))->onlyMainContent()->target('#result')->swap('innerHTML')->applyTo($build['button'])。迁移 AJAX 时识别 #ajax 属性,替换为 Htmx 类,把回调逻辑移入 buildForm(),用 getHtmxTriggerName() 做条件逻辑,并用渲染数组替换 AjaxResponse,最后验证渐进增强。按工作量分级:low 只输出脚手架,medium 及以上追加校验清单,high 及以上借助 /dev-guides-navigator 交叉参考 drupal/forms 与 drupal/js-development。
限制与注意:需保证无 JavaScript 时可用并遵循无障碍(动态区域用 aria-live),URL 更新以支持书签状态;常见问题包括不换内容、内容抽取错误、JS 未运行、表单不提交、多重换失败和历史损坏,需检查 target()/select() 选择器、htmx:drupal:load 事件、post() 与 URL、swapOob('true')、pushUrlHeader() 等。更多细节见 references/quick-reference.md、htmx-implementation.md、migration-patterns.md、ajax-reference.md。