【问题标题】:Symfony2 Route get parameter only if integerSymfony2 Route 仅在整数时获取参数
【发布时间】:2016-11-25 13:03:55
【问题描述】:

我在 routing.yml 文件中定义了路由

一条路线是:

Profile_user_profile:
    path:    /profile/{id}
    defaults: { _controller: ProfileBundle:Users:profile }
    methods: [get]

第二个是:

Profile_accept_connection_proposal:
    path:    /profile/acceptProposal
    defaults: { _controller:ProfileBundle:Users:acceptConnectionProposal }
    methods: [put]

第一个没有方法的路由:[get] 也监听并 [put] 请求并在第二个 url 到达路由定义之前捕获它。仅当 url 为数字时,是否有方法定义检查参数。

【问题讨论】:

    标签: symfony symfony-routing


    【解决方案1】:

    只需添加 requirements 参数即可仅接受确定路线的数字,如下所示:

    Profile_user_profile:
        path:    /profile/{id}
        defaults: { _controller: ProfileBundle:Users:profile }
        methods: [get]
        requirements: <--- ADDED PARAMETER
            id: \d+
    

    更多信息请阅读Symfony book about Routing。在那里您可以找到更多关于如何使用路由参数的高级示例。

    【讨论】:

      【解决方案2】:

      您现在可以使用控制器中的注解来执行此操作,如下所示:

      class UserController extends AbstractController
      {
          /**
           * @Route("/profile/{id}", name="user_profile", requirements={"id"="\d+"})
           */
          public function profile($id)
          {
              // ...
          }
      }
      

      更多信息Symfony's docs 具体defining routing requirements

      【讨论】:

        猜你喜欢
        • 2015-01-14
        • 1970-01-01
        • 1970-01-01
        • 2015-12-12
        • 2019-01-20
        • 2015-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多