Как установить диапазон DateType с выбранной даты на текущую дату?

Я хочу создать для этого, чтобы выбрать год и месяц. Текущее решение не работает, я сокращаю все месяцы 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-ти месячный выбор, и в текущем году он не сможет выбрать будущие месяцы?

php,symfony,date-range,formbuilder,

1

Ответов: 1


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')
    )
PHP, Symfony, дата-диапазон, formbuilder,
Похожие вопросы