我有一个用于创建和更新实体的表格。属性之一是日期startDate
,该输入允许今年和明年。所以目前是2019年和2020年。这是我在 TestType.php 中的代码:
->add('startDate', DateType::class, [
'years' => range(date('Y'), date('Y') +1),
])
这按预期工作。当用户想要使用过去一年的数据(例如2017
)更新实体时,我会遇到一个问题。在这种情况下,我想将范围更改为该年(2017年)到现在+ 1年(2020年)。有什么办法可以在 TestType.php 文件中实现?
答案 0 :(得分:2)
您可以在以下预设数据事件上设置开始年份:
$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
$event->getForm()->add('startDate', DateType::class, [
'years' => range(
$event->getData()->getStartDate() ?
$event->getData()->getStartDate()->format('Y') :
date('Y'),
date('Y')+1
),
]);
});