gpt4 book ai didi

带有可选参数的注释中的 Symfony2 路由

转载 作者:行者123 更新时间:2023-12-02 01:58:12 26 4
gpt4 key购买 nike

我在 Controller 中创建了一个带有可选参数的路由,如下所示:

/**
* League action
*
* @Route("/association/{assoc}/{league}", name="league", requirements={"league" = "\d+"}, defaults={"game" = null})
* @Route("/association/{assoc}/{league}/{game}")
* @Template()
*
* @param $assoc
* @param $league
* @param $game
* @return array
*/
public function leagueAction($assoc, $league, $game)

但是如果我尝试用这个命名路由创建一个链接,可选参数被省略:

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

结果链接是

/association/BVNR/7

我错过了什么?

最佳答案

在下面的定义中,

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

两条路线与您的操作相关,第一个(名为 "league" 没有任何默认参数,第二个未命名(因为您没有添加 name 属性)也没有任何默认参数。

如何修复...

  • name 添加到您的第二条路线并调用它,因为它包含 "game" 参数。
  • “game” 参数的默认值移动到您的第二个路由(因为它是唯一一个具有 game 参数的路由。
  • (你真的不需要定义两条路线,看看我的回答中的“How to improve ...”部分)。

试试这个……

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

虽然您应该调用 "league_game" 而不是 "league"

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

如何改进......

确保您确实需要定义两条路线,因为我建议只保留一条路线。

因为在下面的定义中"game"有一个默认值,

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

然后它涵盖了两个版本,有和没有“game”

关于带有可选参数的注释中的 Symfony2 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18694107/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com