Дополнительные параметры промежуточного маршрута в Symfony 2

Проблема для решения

Возможно ли в Symfony 2 определять маршруты с необязательными параметрами intermediate. Я буду использовать другие данные вопроса, за поддержку меня в том же стиле, например:

  • localhost/параметр 1/параметр 2/параметр 3/параметр 4

Пример

  • localhost/параметр 1/параметр 4
  • локальный/параметр 2/параметр 4

Потому что у меня есть проблема, когда ни один из моих параметров не должен быть обязательным, и в игру вступает другая логика, подчиненная этим активированным параметрам.

До сих пор, если я не устанавливаю так:
- localhost/param 1/param 2/...

(отсутствует: param 3 /парам 4)

Я не могу играть с промежуточными параметрами, и это менее гибкое решение. Если предыдущие параметры для необязательных (все они) не указаны, я не могу этого добиться. Я не хочу создавать дополнительные маршруты для одного и того же контекста, если он выглядит чище.

Это мой контекст маршрута:

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

Вот критерии, которые я преследую:

  • Загрузите данные в нескольких форматах (Необязательно: по умолчанию txt)
  • Загружать данные для определенного идентификатора или без него (Необязательно: я просматриваю все, что нахожу, за период по умолчанию: ежедневно или ежемесячно)
  • Укажите начало ИЛИ конец, начало И конец (Необязательны обе даты)

Я проверяю в своем контроллере пустые параметры маршрута и создаю соответствующие запросы (по умолчанию).

Параметры, инициализированные в моем классе 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');
}

person Felix Aballi    schedule 13.02.2014    source источник
comment
Как узнать param (1|2|3|4)? Можете привести конкретные примеры?   -  person Touki    schedule 17.02.2014
comment
Я обновлю свой пост, для лучшего понимания.   -  person Felix Aballi    schedule 17.02.2014