Это потому, что вы определяете свой интервал для своего месяца с января по месяц текущей даты с неудобным выражением
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')
)