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

标签 php arrays symfony url

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

假设发布的 URL 是:

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

我想在没有 foo 的 Controller 中生成:

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())
);

最佳答案

使用array_merge()没有任何问题。这正是您想要实现的目标。这不是一个“技巧”,而是一种语言功能。

如果您想要更简洁的语法,只需使用 +

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

最终结果与上面完全相同,而且更短。

关于php - 使用 GET 参数在 Symfony 5 中生成 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61674130/

相关文章:

javascript - 如何防止 CanvasJS 在图表上显示值?

python - 使用numpy的genfromtxt用python加载三角矩阵

symfony - 创建一个实现 ContainerAwareInterface 的基础 Controller 类

php - Composer 更新后 Symfony2 崩溃

php - SimpleTest:如何断言抛出 PHP 错误?

javascript - jquery 标签不是由 $.post 生成的

java - Android - If 语句被忽略并绕过

c - 从文件中读取一个整数

c++ - cconstructor 中的迭代器 - vector 和数组

php - 清除缓存时无法写入缓存文件 "/var/www/myapp/app/cache/dev/classes.php"