在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_id
在URL中获取路由参数(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())
);
使用没什么错array_merge()
。那正是您想要完成的。这不是“技巧”,而是一种语言功能。
如果您想使用不太冗长的语法,请使用+
。
$this->generateUrl('user_edit', $request->query->all() + ['id' => $user->getId()]);
最终结果与上述完全相同,并且更短。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句