Проблема для решения
Возможно ли в 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');
}
param (1|2|3|4)
? Можете привести конкретные примеры? - person Touki   schedule 17.02.2014