Choice Type是Symfony表单系统中威力最大的一个,它可以用来创建下拉列表、单选框或复选框。在Symfony 3.2中,我们为它新增了一个全新功能以改善性能:lazy loading the choice values(选项值的懒加载)。
首先,要为ChoiceType定义choice_loader选项,使用全新的CallbackChoiceLoader类来设置PHP回调(callable),该回调在取得选项列表时被执行:
1 2 3 4 5 6 7 8 | 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();
},
]); |
CallableChoiceLoader类实现的是ChoiceLoaderInterface接口,该接口同样被每一个ChoiceType的子类型(subtype)所实现,比如CountryType、CurrencyType、LaguageType、LocalType和TimezonType等。
4.2翻译中
