Сгенерировать URL в формате Symfony 5 с параметрами GET - PullRequest
1 голос
/ 08 мая 2020

В Symfony 5 я хотел бы сгенерировать URL-адрес, частично основанный на уже опубликованных параметрах GET.

Предположим, что опубликованный 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())
);

1 Ответ

1 голос
/ 08 мая 2020

Нет ничего плохого в использовании array_merge(). Это именно то, чего вы хотите достичь sh. Это не «уловка», это языковая функция.

Если вам нужен менее подробный синтаксис, просто используйте +.

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

Конечный результат точно такой же для выше и короче.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...