Ваш виджет и валидатор все еще содержат поле дня.
Все ваши аргументы формата делают, чтобы предотвратить отображение дня - он все еще существует и проверяется за кулисами. Я ожидаю, что именно здесь возникает проблема.
Я бы порекомендовал самое простое исправление - установить по умолчанию день равным 1, переопределив метод связывания в рассматриваемой форме. Не знаю, как у вас дела, но когда я работаю с датами месяца / года, я часто делаю это в базе данных, поскольку это позволяет правильно работать родным форматам даты / времени - тот же аргумент применяется к формам Symfony.
// untested code - i may have array structure/method signatures incorrect.
function bind($taintedValues = array(), $taintedFiles = array()) {
$taintedValues['first_registration']['day'] = 1;
return parent::bind($taintedValues, $taintedFiles);
}
Кроме того, опция date_format для sfValidatorDate принимает в качестве аргумента регулярное выражение, а не формат, используемый в sfWidgetFormDate.