Yii2 多页引导巡更,第二页未显示popover

Yii2 多页引导巡更,第二页未显示popover,yii2,bootstrap-tour,Yii2,Bootstrap Tour,我使用yii2作为后端框架,我想为我的应用程序进行漫游,但第二页上没有显示bootstrap tour popover,我为bootstrap tour创建了一个资产包,并将其注册到布局中,bootstrap tour在第一页上正常工作,但在转到另一页时会出现问题,在下一页的调试中显示: 引导程序巡更“巡更”|重定向到纸张/上传 引导巡更“巡更”|错误重定向循环到纸张/上传 我已经在chrome的开发者工具中检查了window local storage,当转到第二页window local s

我使用yii2作为后端框架,我想为我的应用程序进行漫游,但第二页上没有显示bootstrap tour popover,我为bootstrap tour创建了一个资产包,并将其注册到布局中,bootstrap tour在第一页上正常工作,但在转到另一页时会出现问题,在下一页的调试中显示:
引导程序巡更“巡更”|重定向到纸张/上传
引导巡更“巡更”|错误重定向循环到纸张/上传

我已经在chrome的开发者工具中检查了window local storage,当转到第二页window local storage(窗口本地存储)时,我发现它的步骤是正确的: 巡更\当前\步进值2

还有一个问题,我应该如何设置yii2路由器引导程序中路径选项的值,我的路径正确吗?例如,网站主页上的第一步是:“,是否正确,如果有人单击popover的“上一步”按钮,我希望返回到上一步。
这是我的javascript代码,我在布局文件中注册了此javascript代码:
$(函数(){
var$演示、持续时间、剩余时间、巡演;
$demo=$(“#demo”);
持续时间=5000;
剩余=持续时间;
旅游=新旅游({
onStart:function(){
返回$demo.addClass(“disabled”,true);
},
onEnd:function(){
返回$demo.removeClass(“disabled”,true);
},
是的,
步骤:[
{
路径:“”,
元素:“#演示”,
位置:“底部”,
标题:“欢迎来到Bootstrap Tour!”,
内容:“逐步引导新用户了解您的产品。”
}, {
路径:“”,
元素:“#字计数器”,
位置:“底部”,
标题:“第一步”,
内容:“要进行翻译,请单击单词计数器菜单项”
}, {
路径:“纸张/上传”,
元素:“#myDropzone”,
位置:“顶部”,
标题:“第二步”,
内容:“将文件拖放到此处或单击上载plz wate以完成上载”
}
,
{
路径:“纸张/上传”,
元素:“#下一步”,
位置:“底部”,
标题:“第三步”,
内容:“然后点击下一个底部”,
反射:对
}, {
路径:“纸张/显示”,
元素:“#保存”,
位置:“顶部”,
标题:“第四步”,
内容:“点击保存并继续,选择语言计划”,
持续时间:5000
}
]
}).init();
if(tour.end()){
$(“×;您已结束演示教程”。).prependTo(“.content”).alert();
}
$(文档)。在(“单击”、“数据演示”)上,函数(e){
e、 预防默认值();
if($(this).hasClass(“已禁用”)){
返回;
}
tour.restart();
返回美元(“.alert”).alert(“关闭”);
});

});我对代码做了很多工作,最后找到了答案,问题出在路径上,我在URL管理器中使用了漂亮的URL,引导程序需要关系路径,如果当前页面中的路径与引导程序步骤中的路径不相同,它将进入重定向循环,这是因为引导程序找不到任何方法,它需要重定向还是不需要,这是引导程序的简短代码,指向重定向循环

      if (step.redirect && this._isRedirect(step.host, path, document.location)) {
        this._redirect(step, i, path);
        if (!this._isJustPathHashDifferent(step.host, path, document.location)) {
          return;
        }
      }
为了解决这个问题,当路径应该从路由器获取时(例如在Yii、Laravel、Symfony和…)引导程序建议在步骤中使用onNext属性并重定向到地址。
但在我的例子中,我更改了bootstrap tour的源代码,以更好的形式找到我的答案,并用以下代码替换上面的代码:

    var current_url = document.URL;
    var result = current_url.includes(path);        
    if(!result){
        this._redirect(step, i, path);
        if (!this._isJustPathHashDifferent(step.host, path, document.location)) {
          return;
        }            
    }
并将重定向代码更改为:

    Tour.prototype._redirect = function(step, i, path) {
      var href;
      if ($.isFunction(step.redirect)) {
        return step.redirect.call(this, path);
      } else {
          href = this._options.domainAddress + path;
//        href = {}.toString.call(step.host) === '[object String]' ? "" + step.host + path : path;
        this._debug("Redirect to: " + href);
        if (this._getState('redirect_to') === ("" + i)) {
          this._debug("Error redirection loop to " + path);
          this._removeState('redirect_to');
          if (step.onRedirectError != null) {
            return step.onRedirectError(this);
          }
        } else {
          this._setState('redirect_to', "" + i);
          return document.location.href = href;
        }
      }
    };
并在选项domainAddress中定义一个全局变量, 但我认为这并不是一个改变bootstrap-tour源代码的好方法,但它对我的情况来说是可行的