如何在不改变其他值的情况下,通过点击Twig的链接(或按钮)改变_$GET[]中的一个值?

我有其他的搜索查询,比如从搜索中查询,从标签中查询等等。我不想改变它们。pageno的值将被用于分页。

所以我想改变’pageno’而不改变或取消其他的值。

这是我在Twig中做的。

<a href=?{{ request.server.get('QUERY_STRING')|replace({"&pageno=" : ""}) }}&pageno={{ page }}>{{ page }}</a>

但得到的结果是这样的 query=&from-date=&to-date=&search=search413&pageno=5。

采集以前的页码 “413”,当你从一个页面导航到另一个页面时,它总是加一个”&”。

我试过的另一个方法是用php做一个字符串,然后传到Twig模板上。

$queryStr = $request->server->get('QUERY_STRING');
$queryStr = preg_replace("/pageno=\\w+/", "", $queryStr); // Remove pageno=???
$queryStr = $queryStr == "" ? "" : ($queryStr . "&");  // ad a & if there's already other $_GET values
$queryStr = str_replace("&&","&", $queryStr); // replace && so it doesn't look bad

In Twig:

<a href=?{{ queryStr }}pageno={{ page }}>{{ page }}</a>

这看起来太麻烦了,太费劲了,而且我给Twig传递了很多值。

有没有更简单的方法,不用传这么多值给Twig?

解决方案:

只要创建一个 twig 这样的函数。

$twig->addFunction(new \Twig\TwigFunction('get_page_url', function($query = [], $append = true) {
    $tmp = $append ? $_GET : [];
    foreach($query as $key => $value) $tmp[$key] = $value;

    return '?' . http_build_query($tmp);
});

用在 twig 喜欢

<a href="{{ get_page_url({ 'pageno': 42, }) }}">next</a>

给TA打赏
共{{data.count}}人
人已打赏
未分类

有没有更好的方法让google地图发挥作用?[重复]

2022-9-9 14:40:19

未分类

相同值的多个for循环的时间复杂度

2022-9-9 14:40:21

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索