Symfony表单日期范围加上现有日期

时间:2019-01-03 10:54:12

标签: php symfony

我有一个用于创建和更新实体的表格。属性之一是日期startDate,该输入允许今年和明年。所以目前是2019年和2020年。这是我在 TestType.php 中的代码:

->add('startDate', DateType::class, [
    'years' => range(date('Y'), date('Y') +1),
])

这按预期工作。当用户想要使用过去一年的数据(例如2017)更新实体时,我会遇到一个问题。在这种情况下,我想将范围更改为该年(2017年)到现在+ 1年(2020年)。有什么办法可以在 TestType.php 文件中实现?

1 个答案:

答案 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
         ),
    ]);
});

Symfony's form events documentation