Symfony2 Route получить параметр только если целое число


Я получил определенные маршруты в маршрутизации.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]

Первый маршрут без способов: [вам] слушать также и [поставил] запрос и поймать второй URL-адрес, прежде чем дошло до определения маршрута. Есть ли способ определить проверку параметра только в том случае, если url является числовым.

2 2

2 ответа:

Просто добавьте параметр requirements, чтобы принимать только цифры для определенного маршрута, например:

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

Для получения дополнительной информации прочитайте Symfony книгу о маршрутизации. Там вы можете найти более продвинутый пример использования параметров маршрута.

Теперь вы можете сделать это с аннотациями в вашем контроллере следующим образом:

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

Подробнее о документах Symfony В частности определение требований к маршрутизации