仅在重定向时才在pjax中保持状态

时间:2015-10-15 16:34:12

标签: yii2 pjax

在我的一个页面中,我有一个由pjax处理的链接。基本上用户点击一个项目,该项目变为"已检查" (并保存在数据库中)。

我已经为这些请求禁用了pushState,因为它没有意义,用户有效地停留在同一页面中,因此更改网址是违反直觉的。

但是,有一种情况是此pjax请求导致重定向到登录页面(当用户未登录时)。这就是我真的需要pushState才能工作的时候,它并不是因为我首先禁用了它。

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

2 个答案:

答案 0 :(得分:2)

使用当前功能无法做到这一点。我已经为pjax添加了两个选项,我的PR已经被pjax的yii2分支接受了。所以,不用多说:

https://github.com/yiisoft/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
});

答案 1 :(得分:0)

使用linkSelector指定哪些链接触发pjax调用

<input type="hidden" value="<?=$email?>" />