6

我在 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 是数字的情况下定义检查参数。

4

2 回答 2

8

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

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

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

于 2016-07-21T19:37:04.133 回答
7

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

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

有关Symfony 文档的更多信息 特别 定义路由要求

于 2018-09-26T12:52:58.337 回答