Deve-se observar que, se você tiver parâmetros de consulta adicionais no seu URL, que não fazem parte da rota configurada, a resposta aceita não os incluirá no URL atual (caminho).
Por que você deseja parâmetros extras?
Por exemplo, se você tiver uma página de lista com registros que podem ser filtrados por palavra-chave e a página tenha paginação, provavelmente as variáveis de consulta para "palavra-chave" e "página" não estarão no seu caminho. Mas nos botões avançar e voltar da paginação, você precisa do URL atual completo (que contém as palavras-chave para que a próxima página ainda seja filtrada). E você precisa modificar a variável da página.
Como mesclar parâmetros de consulta extra
Assim, você pode obter a rota atual e mesclar as variáveis extras (após modificar uma ou mais dessas variáveis extras). Observe que você está mesclando suas próprias variáveis em app.request.query.all
e, em seguida, mesclando essa matriz no app.request.attributes.get('_route_params')
. O path()
método requer que você forneça todos os parâmetros necessários da rota, e é por isso que você precisa incluir o _route_params
.
{{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')|merge(app.request.query.all|merge({'page': 2 }))) }}
Isso é realmente feio, mas se você estiver desenvolvendo paginação, precisará modificar a variável da página em cada link separado, para incluir a coisa toda a cada vez. Talvez outros tenham uma solução melhor.