Search code examples
symfonysymfony-routing

Symfony2 Route get parameter only if integer


I got defined routes in routing.yml file

one route is:

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

and second is:

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

First route without methods: [get] listen also and [put] request and catch second url before it get to route definition. Is there way to define checking for parameter only if url is numeric.


Solution

  • Just add the requirements parameter to accept only digits for a determined route like this:

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

    For more infos read the Symfony book about Routing. There you can find more advanced example on how to use route parameters.