Symfony2 Route 仅在整数时获取参数

Posted

技术标签:

【中文标题】Symfony2 Route 仅在整数时获取参数【英文标题】:Symfony2 Route get parameter only if integer 【发布时间】: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 为数字时,是否有方法定义检查参数。

【问题讨论】:

【参考方案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

【讨论】:

以上是关于Symfony2 Route 仅在整数时获取参数的主要内容,如果未能解决你的问题,请参考以下文章

symfony2 获取路由参数(控制器参数与请求)

vuejs this.$route 地址栏问题

使用多个参数对对象进行排序 - symfony2

从控制器 Symfony2 中的 URL 获取参数

Symfony2:创建表单时如何设置表单域的值

tp5.1 路由获取参数问题总结