ChoiceType является самым мощным Symfony типом формы и используется для создания раскрывающихся списков, радио-кнопок и флажков. В Symfony 3.2 мы добавили новую функцию, чтобы улучшить его характеристики: отложенной загрузки значений.
Во-первых, нужно определить choice_loader
опции загрузчика для ChoiceType, а затем использовать новый класс CallbackChoiceLoader
для установки PHP функции обратного вызова, чтобы получить список вариантов:
use Symfony\Component\Form\ChoiceList\Loader\CallbackChoiceLoader; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; $builder->add('constants', ChoiceType::class, [ 'choice_loader' => new CallbackChoiceLoader(function() { return StaticClass::getConstants(); }, ]);
Класс CallbackChoiceLoader реализует ChoiceLoaderInterface, который в настоящее время также реализуется в каждом подтипе ChoiceType, например CountryType, CurrencyType, LanguageType, LocaleType и TimezoneType.
Источник: https://symfony.com/blog/new-in-symfony-3-2-lazy-loading-of-form-choices