Javascript 如何在twig中获取当前锚点/_片段

Javascript 如何在twig中获取当前锚点/_片段,javascript,symfony,twig,anchor,Javascript,Symfony,Twig,Anchor,我有一个带有3个锚的页面(名为a、b和c) 当我访问此页面时,我可以 http://local/personne/1#a http://local/personne/1#b http://local/personne/1#c 您可以想象,我的页面显示一些personne数据,我还有一个快速导航器来导航到下一个用户 我希望这个快速导航器保持当前的锚(或者至少是页面加载时的锚) 我知道symfony中的“_fragment”内容,我认为它可以用于我的“至少”解决方案 <a href=&qu

我有一个带有3个锚的页面(名为a、b和c) 当我访问此页面时,我可以

  • http://local/personne/1#a
  • http://local/personne/1#b
  • http://local/personne/1#c
您可以想象,我的页面显示一些personne数据,我还有一个快速导航器来导航到下一个用户

我希望这个快速导航器保持当前的锚(或者至少是页面加载时的锚)

我知道symfony中的“_fragment”内容,我认为它可以用于我的“至少”解决方案

<a href="{{ path('next_personne', {'id': personne.id, '_fragment': 'TODO get current fragment here'}) }}">
          {{ personne.name }}
</a>

所以如果我们访问

  • http://local/personne/1#a ==> http://local/personne/2#a
  • http://local/personne/1#b ==> http://local/personne/2#b
  • http://local/personne/1#c ==> http://local/personne/2#c
如果可能,我想实施的解决方案是:

如果我们使用http://local/personne/1#a,它会将下一个人的url呈现为http://local/personne/2#a. 如果我们点击使锚更改为b,“下一步”按钮的url也将更改为b。我想这需要一些JS


因此,基本上,如果你知道如何在twig或/和JS中获得当前的锚,它可能会解决我的问题。

所以最后,正如DarkBee所说,似乎只有JS可以解决这个问题

Jquery提供了一些东西,可以轻松做到这一点(请参阅):


函数changeHash(){
$('.add fragment')。每个(函数(){
让_fragment=window.location.hash.substr(1);
让href=$(this.attr('href').split('#')[0];
$(this.attr('href',href+'#'+\u片段);
})
}
$(文档).ready(函数(){
changeHash();
addEventListener(“hashchange”,function(){changeHash();},false);
});
基本上,在更改时,我使用类add fragment将哈希添加到所有链接,在更改时,我重做相同的工作


这解决了我的整个问题。

因此,正如DarkBee所说,似乎只有JS可以解决这个问题

Jquery提供了一些东西,可以轻松做到这一点(请参阅):


函数changeHash(){
$('.add fragment')。每个(函数(){
让_fragment=window.location.hash.substr(1);
让href=$(this.attr('href').split('#')[0];
$(this.attr('href',href+'#'+\u片段);
})
}
$(文档).ready(函数(){
changeHash();
addEventListener(“hashchange”,function(){changeHash();},false);
});
基本上,在更改时,我使用类add fragment将哈希添加到所有链接,在更改时,我重做相同的工作


这解决了我的全部问题。

你没有。URL片段不会发送到服务器。你需要求助于JavaScriptor,也许这对你有帮助。URL片段不会发送到服务器。你需要求助于Javascript,也许可以帮你
<script type="text/javascript">
    function changeHash(){
        $('.add-fragment').each(function () {
            let _fragment = window.location.hash.substr(1);
            let href = $(this).attr('href').split('#')[0];
            $(this).attr('href', href+'#'+_fragment);

        })
    }

    $(document).ready(function () {
        changeHash();
        window.addEventListener("hashchange", function(){changeHash();}, false);
    });
</script>