Подтвердить что ты не робот

Как я могу иметь необязательные параметры в маршруте Symfony2

У меня есть следующий код:

/**
 * Lists all User entities.
 *
 * @Route("/{cid}",defaults={"cid" = null},name="user")
 * @Template()
 */
public function indexAction($cid=null)
{}

Теперь, если я набираю site/user/1, тогда он работает, но если я наберу site/user/, он говорит:

No route found

Как мне заставить работать оба маршрута?

4b9b3361

Ответ 1

Попытайтесь перейти к site/user (не замечайте обратную косую черту в конце).

Как правило, он должен работать, я имею относительно похожую конфигурацию.

Но если все остальное не удается, вы всегда можете определить несколько маршрутов для одного и того же действия, т.е.

/**
 * Lists all User entities.
 *
 * @Route("/", name="user_no_cid")
 * @Route("/{cid}", name="user")
 * @Template()
 */
public function indexAction($cid=null)
{

Ответ 2

Используйте yml файл для конфигурации маршрутизации и добавьте значение по умолчанию для идентификатора в параметрах маршрутизации, например:

user:
  pattern:   /site/user/{id}
  defaults:  { _controller: YourBundle:Default:index, id: 1 }

Смотрите документацию здесь

Ответ 3

Вы также можете сделать это с помощью параметра GET, например

/**
 * @param Request $request
 *
 * @return Response
 */
public function displayDetailAction(Request $request)
{
    if ($courseId = $request->query->get('courseId')) {