【问题标题】:Empty route path for different methods in symfonysymfony 中不同方法的空路由路径
【发布时间】:2017-10-25 05:24:25
【问题描述】:

我正在使用 Symfony 和 FOSRestBundle 开发 API,并希望使用以下路由:

app/config/routing.yml

page:
  prefix: /page
  resource: "@PageBundle/Resources/config/routing.yml"

PageBundle/Resources/Config/routing.yml

page_get:
  path: /{id}
  methods: GET
  defaults:
    _controller: PageBundle:Page:get
    id: null

page_post:
  path: /
  methods: POST
  defaults:
    _controller: PageBundle:Page:post

PUT 和 DELETE 相同...

当我为 /page 调用 GET 时工作正常,但是当为 /page 调用 POST 时,我收到以下错误:

No route found for "POST /page": Method Not Allowed (Allow: GET, HEAD)

我需要调用 /page/ 而不是 /page,然后就可以了...

如何为不同的方法使用相同的空路径?

对不起,我的英语不好。

【问题讨论】:

  • 你尝试过方法:['GET','POST'] 吗?这里的 yml 部分有一些要点symfony.com/doc/current/routing/…
  • 方法有效,但没有找到 POST /page 的路由,只有 POST /page/。并且 GET /page 工作正常。

标签: php symfony methods routing fosrestbundle


【解决方案1】:

您需要做的是从 app/config/routing.yml

中删除 prefix
page:
    resource: "@PageBundle/Resources/config/routing.yml"

并将其添加到 PageBundle/Resources/Config/routing.yml

中的路径
moodul_page_get:
    path: /page/{id}
    methods: GET
    defaults:
        _controller: MoodulPageBundle:Page:get
        id: null

moodul_page_post:
    path: /page
    methods: POST
    defaults:
        _controller: MoodulPageBundle:Page:post

希望对你有帮助

【讨论】:

  • 我知道,但我想将前缀保留在 app/config/routing.yml 中,因为我有更多捆绑包共享相同的 PageBunde 结构。
  • 你需要为自己定义是/pageprefix还是path
  • 我有更多的捆绑包,例如 PageBundle,它们将在多个应用程序之间共享。所以我想在 routing.yml 中使用 prefix 来管理每个应用程序中的路由
猜你喜欢
  • 1970-01-01
  • 2019-09-24
  • 1970-01-01
  • 2017-01-20
  • 1970-01-01
  • 2021-12-09
  • 1970-01-01
  • 2017-10-09
  • 1970-01-01
相关资源
最近更新 更多