blueweb/nette-ajax-history

为 Nette 框架 3 添加 History API 支持。

3.0.1 2024-05-15 19:19 UTC

This package is auto-updated.

Last update: 2024-09-15 20:05:23 UTC


README

为 Nette 框架的 nette.ajax.js 插件添加 History API 支持!

此仓库是 vojtech-dobes/history.nette.ajax.js 包的一个分支,增加了对 Nette 3 的支持。

所有荣誉归功于 Vojtěch。谢谢!

安装

  1. nette.ajax.js 之后链接 client-side/history.ajax.js
  2. 使用 Composer 加载 PHP 文件:blueweb/nette-ajax-history
  3. 在您的配置中注册配置扩展
extensions:
	ajaxHistory: Blueweb\NetteAjax\HistoryExtension

使用方法

按正常方式编写您的应用程序。所有重定向和转发都将得到正确处理。

为了正确更新 UI,请使用片段。如果您计划将整个应用程序进行 Ajax 化,请考虑将此片段添加到 BasePresenter 中的 beforeRender() 方法。

if ($this->isAjax()) {
	$this->invalidateControl('title');
	$this->invalidateControl('content');
}

并且可能需要相应地升级 app/@layout.latte

<title n:inner-snippet="title">...</title>
{snippet content}
	{include content}
{/snippet}

禁用

如果您想排除特定的链接或表单,使它们不在此插件的范围内(不更新 URL),则可以使用 nette.ajax.jsdata-ajax-off 功能。

<a class="ajax" data-ajax-off="history">

UI 缓存

扩展将自动缓存您的 UI,并在点击 后退前进 按钮时恢复它,无需与服务器通信。如果您希望在每次点击 后退前进 时都调用服务器,请关闭缓存。

$.nette.ext('history').cache = false;