如何设置DateType范围从选定日期到当前日期?

时间:2018-07-12 07:56:07

标签: php symfony date-range formbuilder

我想为此创建选择年份和月份。当前的解决方案不起作用,我将所有月份都削减为7,因为发布此时间的当前月份为“ 7”。

 $builder->add(
        'filter_date',
        DateType::class,
        [
            'format' => 'yMd',
            'years' => range(
                (new DateTime('2013-01-01'))->format('Y'),
                (new DateTime())->format('Y')
            ),
            'months' => range(
                (new DateTime('2013-01-01'))->format('m'),
                (new DateTime())->format('m')
            ),
            'days' => [1],
            'placeholder' => [
                'year' => '----',
                'month' => '----',
                'day' => false,
            ],
            'required' => true,
        ]
    )

如何使所有年份都可以选择12个月,而在当前年份,它将无法选择未来的月份?

1 个答案:

答案 0 :(得分:1)

这是因为您要使用尴尬的表达式来定义从一月到当前日期的月份之间的时间间隔

range(
                (new DateTime('2013-01-01'))->format('m'),
                (new DateTime())->format('m')
            )

'months' => range(1,12)

如果想追溯5年的话,可以简单地保存多年

'years' => range(date("Y")-5, date("Y"))

或者如果您希望2013年作为固定开始时间

'years' => range(2013, date("Y"))

输入值的呈现发生在服务器端,因此您不能动态地从输入中添加/删除值。 如果您仍想使用分隔的输入值来选择日期,则必须编写自己的JS代码以动态替换值。

如果您同意日期选择器,则可以使用以下方法。

'widget' => 'single_text',
'attr' => array(
        'max' => date('Y-m-d')
    )