ragnar_ok, ну логично же. Вы ждете public function setOptions(?options $options) единственный экзмепляр сущности Options (кстати, этот код не будет работать на регистрозависимых ФС), а в форме передаете туда коллекцию из этих объектов
Дмитрий, все так. Основной посыл в том, что не стоит избегать render в шаблонах, потому что в случае высокой нагрузки эти блоки можно будет красиво закешировать, т.о. что, к примеру, блок в футере кешируется на месяц, а блок, с какими-нибудь курсами валют на сутки, при том что они все выводятся на одной странице
Дмитрий, как по мне - экономия на спичках. Если вдруг начнете проседать по производительности, то render легко заменяется на render_esi и varnish. В вашем подходе не получится, к примеру, получать эти данные из консоли, все завязывается на реквест
Если очень хочется все-таки отключить кеширование (только тогда ваш роутер превратится из самого быстрого php-роутера в самый медленный), то передавайте cache_dir => null (CompilerPass в помощь) в опциях при инициализации роутера, а не при получении списка роутов, как у вас.
Для вывода формы фильтра используется symfony/form или он только для валидации пришедших от фронта данных используется (знаю дико звучит, но некоторые почему-то так делают)?