【发布时间】:2020-05-08 07:27:30
【问题描述】:
在 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())
);
【问题讨论】:
-
是的,谢谢你的回答 yivi。我刚刚投票了。