Symfony2 route in annotations with optional parameters

百般思念 提交于 2019-12-01 20:24:23

In the following definitions,

* @Route("/association/{assoc}/{league}", name="league", requirements={"league" = "\d+"}, defaults={"game" = null})
* @Route("/association/{assoc}/{league}/{game}")

two routes are related to your action, the first one (named "league" which doesn't have any default parameter and a second unnamed one (as you didn't add name attribute) which also doesn't have any default parameter.

How to fix ...

  • Add a name to your second route and call it as it contains "game" parameter.
  • Move the default value of "game" parameter to your second route (As it the only one to have a game parameter.
  • (You don't really need to define two routes, take a look at the "How to improve ..." part of my answer).

Try this ...

 * @Route("/association/{assoc}/{league}/{game}", name="league_game", requirements={"league" = "\d+"}, defaults={"game" = null})

While you should call "league_game" instead of "league",

{{ path('league_game', {'assoc': association.short, 'league': league.id, 'game': g.id}) }}

How to improve ...

Make sure you really need to define two routes, because I would suggest keeping only one route.

As there's a default value for "game"in the following definition,

@Route("/association/{assoc}/{league}/{game}", name="league", requirements={"league" = "\d+"}, defaults={"game" = null}

It then covers both versions, with and without "game".

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!