【问题标题】:Symfony2 append hash fragment parameters to the pagination URLSymfony2 将哈希片段参数附加到分页 URL
【发布时间】:2015-04-27 20:50:59
【问题描述】:

我正在使用symfony2 开发一个网站。我正在使用KnpPaginationBundle 对页面中的产品列表进行分页。 每件事都工作得很好。 但我找不到一种方法来传递额外的参数,比如我想在网站 url 中显示的 div 部分的 id,比如:localhost/my_store/web/app_dev.php/products?page=2#idsection

【问题讨论】:

    标签: php symfony knppaginator


    【解决方案1】:

    我看到了两种实现目标的方法,它们都与 javascript 相关。

    1) 如果你有 url localhost/website/app_dev.php/page=2#blockid 你可以尝试从 url 获取这个 id 并通过 js 向下滚动。 你的 js 应该是这样的:

    $(document).ready(function(){
      var ourUrl = window.location.href; 
      var pattern = /#\w+$/;
      var divId = ourUrl.match(pattern));
      var offset = $(divId).offset();
      window.scrollTo(0, offset.top);
    });
    

    2)另一种方法是使用ajax 对产品进行分页。使用这种方法,您无需在某处滚动。

    【讨论】:

    • 实际上我只是希望当我转到下一页时重新加载页面,然后显示我拥有我的产品列表的部分。我认为我不需要将其作为查询参数传递。
    • 对不起,我想我不完全理解你的问题...你有一个产品列表,你使用 bundle 对它们进行分页。你说“转到下一页”。这是分页页面,还是其他网站的页面?您想设置应该显示列表的某个 div 的 id?
    • 是的,完全在同一个分页页面中,我希望在页面重新加载时显示带有哈希片段的部分
    • 好的,什么是“节”?是某个 div 可以是页面上的任何 div 吗?你想在你的分页 div 中显示它吗?或者它是您产品列表的一部分。我不清楚预期的结果。您的期望与 Pagination Bundle 的工作结果有何不同?
    • 也许您想在页面重新加载后存储分页结果?为此,您可以使用 session
    【解决方案2】:

    晚了几年,但万一其他人正在寻找在其 knp/paginator-bundle URI 中包含片段的能力。

    Symfony 3.2+ UrlGenerator 接受用于创建# 片段的_fragment parameter

    在 knp/paginator-bundle 中,$paginator->paginate() 接口提供了 SlidingPagination::setParam() 方法,该方法被传递给 Symfony UrlGenerator

    UrlGenerator::generate($pagination->getRoute(), $pagination->getParams())
    

    在 knp/paginatior-bundle 2.0 - 2.2.* 中,SlidingPagination::sortable() 方法调用 UrlGenerator::generate() 方法。

    在 knp/paginatior-bundle 2.3.* 中,knp_pagination_* twig functions 调用 UrlGenerator::generate() 方法。

    在 knp/paginatior-bundle 2.4+ 中,路由器逻辑已从 Twig 扩展移至 Processor

    使用示例

    $pagination = $paginator->paginate($query, $request->query->getInt('page', 1), $limit);
    $pagination->setParam('_fragment', 'idsection');
    
    return $this->render('view.html.twig', [
        'pagination' => $pagination
    ]);
    
    {{ knp_pagination_sortable(pagination, 'Title', 'alias.property') }} #idsection
    
    {{ knp_pagination_render(pagination) }} #idsection
    

    【讨论】:

      猜你喜欢
      • 2014-11-14
      • 2011-09-18
      • 2010-11-12
      • 2018-01-28
      • 2021-07-05
      • 1970-01-01
      • 2018-06-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多