Yii2 仅当重定向时pjax中的Pushstate

Yii2 仅当重定向时pjax中的Pushstate,yii2,pjax,Yii2,Pjax,在我的一个页面中,我有一个由pjax处理的链接。基本上,当用户单击一个项目时,该项目将被“选中”(并保存在数据库中) 我已经为这些请求禁用了pushState,因为这毫无意义,用户实际上停留在同一个页面上,所以更改url是违反直觉的 然而,当这个pjax请求导致重定向到登录页面时(当用户未登录时),就会出现这种情况。这是我真正需要pushState工作的时候,但事实并非如此,因为我首先禁用了它 是否可以配置pjax,使正常响应在没有pushState的情况下工作,但重定向响应(使用X-pjax-

在我的一个页面中,我有一个由pjax处理的链接。基本上,当用户单击一个项目时,该项目将被“选中”(并保存在数据库中)

我已经为这些请求禁用了pushState,因为这毫无意义,用户实际上停留在同一个页面上,所以更改url是违反直觉的

然而,当这个pjax请求导致重定向到登录页面时(当用户未登录时),就会出现这种情况。这是我真正需要pushState工作的时候,但事实并非如此,因为我首先禁用了它


是否可以配置pjax,使正常响应在没有pushState的情况下工作,但重定向响应(使用
X-pjax-Url
header完成)执行pushState?

使用当前功能无法实现。我向pjax添加了另外两个选项,我的PR已被pjax的Yi2分支接受。因此,不言而喻:


使用链接选择器指定触发pjax调用的链接


您可以在同一页面中轻松处理2个不同的pjax配置。请添加一些关于如何使用pjax的详细信息。当然,我可以创建两个不同的pjax块,一个带重定向,一个不带重定向,但我需要一个链接来根据服务器的回复代码进行不同的操作。实际上,我已经看过pjax的源代码,我现在怀疑它是否可能,因为如果响应代码是301、302或303,它总是执行replaceState。您不需要另一个pjax“block”,我知道这是一篇老文章,但您可以使用
linkSelector
定义一个jQuery选择器,以便仅在特定按钮上使用pjax(我对状态更改切换和删除按钮执行此操作)
//pushRedirect - Whether to pushState the URL for redirects. Defaults to false.
//replaceRedirect - Whether to replaceState the URL for redirects. Defaults to true.

// ...

jQuery(document).pjax("#example_selector", {
  "push": false,
  "replace": false,
  "pushRedirect": true,
  "replaceRedirect": false
});