在Symfony 5中使用GET参数生成URL

问题描述 投票:1回答:1

在Symfony 5中,我想部分根据已发布的GET参数生成一个URL。

假设发布的URL为:

user/edit/5?foo=1&bar=1&baz=1&qux=1

我想在没有foo的控制器中生成:

user/edit/5?bar=1&baz=1&qux=1

首先,我删除foo参数:

$request->query->remove('foo');

如果我没有在URL中获得user_id作为路由参数(5),则可以使用:

$this->generateUrl('user_edit', $request->query->all());

但是这不起作用,因为缺少user_id。因此,如何在不重写所有变量的情况下生成此类URL:

$this->generateUrl('user_edit', ['id' => $user->getId(), ???]);

[我当时在考虑PHP函数array_merge(),但是在我看来,这比巧妙的解决方案更像是个技巧:

$this->generateUrl('user_edit', array_merge(
    ['id' => $user->getId()],
    $request->query->all())
);
php arrays symfony url
1个回答
1
投票

使用array_merge()没有错。那正是您想要完成的。这不是“把戏”,它是一种语言功能。

如果您希望使用不太冗长的语法,请使用+

$this->generateUrl('user_edit', $request->query->all() + ['id' => $user->getId()]);

最终结果与上述完全相同,并且更短。

© www.soinside.com 2019 - 2024. All rights reserved.