Parâmetros opcionais de rota intermediária no Symfony 2

Problema a resolver

É possível no Symfony 2, definir rotas com 'intermediário'parâmetros opcionais.Vou usar outros dados da pergunta, por me apoiar usando o mesmo estilo, por exemplo:

localhost/ param 1 / param 2 / param 3 / param 4Exemplolocalhost/ param 1 / param 4localhost/ param 2 / param 4

Porque tenho um problema em que nenhum dos meus parâmetros deve ser obrigatório e lógicas diferentes entram em jogo, subordinadas a esses parâmetros ativados.

Até agora, se eu não definir assim:
- localhost/ param 1 / param 2 / ...

(ausência de:parâmetro 3 / parâmetro 4)

Não consigo jogar com parâmetros intermediários e é uma solução menos flexível. Se os parâmetros anteriores aos opcionais (todos eles) não forem especificados, não será possível. Não quero criar rotas adicionais para o mesmo contexto se tiver uma visão mais limpa.

Este é o meu contexto de rota:

zk_time_download_with_all_parameters:
    pattern: /download/{format}/{id}/{start_date}/{end_date}
    defaults: { _controller: ZkTimeBundle:Empleado:download, format: txt, id: %employeeId%, start_date: %start_date%, end_date: %end_date% }
    requirements:
      id: -?\d+
      start_date: ^((\d{4})[/|-]?(\d{2})[/|-]?(\d{2}))*|(\d{2})[/|-]?(\d{2})[/|-]?(\d{4})$
      end_date: ^((\d{4})[/|-]?(\d{2})[/|-]?(\d{2}))*|(\d{2})[/|-]?(\d{2})[/|-]?(\d{4})$
      format: txt|xml|pdf

Estes são os critérios que eu busco:

Baixe os dados em váriosformatos (Opcional: 'txt' por padrão)Baixe dados para um específicoEu iria ou sem ele (Opcional: espreito tudo o que encontro para o período padrão: diariamente ou mensalmente)Especificamoscomeçar OU fim, começar E fim (Ambas as datas opcionais)

Verifico no meu controlador os parâmetros vazios da rota e crio as consultas correspondentes (por padrão).

Parâmetros inicializados na minha classe Extension:
    public function load(array $configs, ContainerBuilder $container)
{
    $configuration = new Configuration();
    $config = $this->processConfiguration($configuration, $configs);

    //Route: /marca/{start_date}/{end_date}
    $today = date('d-m-Y');
    $today_object = new \DateTime($today);
    $total_days = $today_object->format('t');

    $month_start = $today_object->format('Y-m-1');
    $month_end = $today_object->format('Y-m-' . $total_days);

    $container->setParameter('month_start', $month_start);
    $container->setParameter('month_end', $month_end);
    $container->setParameter('start_date', $today);
    $container->setParameter('end_date', $today);
    $container->setParameter('format', 'txt');
    $container->setParameter('employeeId', 0);

    $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
    $loader->load('services.yml');
}

questionAnswers(0)

yourAnswerToTheQuestion