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

在 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');

如果我没有将user_idURL 中的 作为路由参数 (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())

);


智慧大石
浏览 108回答 1
1回答

慕哥6287543

使用array_merge(). 这正是你想要完成的。这不是“技巧”,而是一种语言功能。如果您想要更简洁的语法,只需使用+.$this->generateUrl('user_edit', $request->query->all() + ['id' => $user->getId()]);最终结果与上面的完全相同,而且更短。
打开App,查看更多内容
随时随地看视频慕课网APP