Symfony – Datum-Bereich anpassen

Mit der Weihnachtszeit steht bei mir die Entwicklung einer größeren Datenbank- Anwendung inklusive Webseite auf dem Plan. Zur Entwicklung dient einmal mehr Symfony als Grundlage. Symfony 1.2 um genau zu sein. Neben der Begeisterung ist damit allerdings auch das ein oder andere Problem verbunden. Was in Symfony 1.0 so funktionierte, funktioniert in Version 1.2 so.

Zu all diesen kleinen Problemchen werde ich hier posten, so das sie anderen erspart bleiben und mir nicht in Vergessenheit geraten. Los geht’s mit dem Anpassen der Datum-Anzeige im Admin-Genearator.

Die Anwendung an der ich arbeite basiert auf schon bestehenden Daten. Dummer Weise blieben beim Import der älteren Datensätzen die Jahresangaben scheinbar auf der Strecke. Schnell war klar, dass es nicht am Import-Script, sondern an den vom Admin-Generator für datetime bereit gestellten Datum-Felder lag. Diese erlauben nur eine Anzeige von 5 Jahren in der Vergangenheit und 5 Jahren in der Zukunft.

Nach etwas Suchen, findet sich in der Klasse sfWidgetFormDate dann auch die Zeile:

$years = range(date('Y') - 5, date('Y') + 5);

Alles klar, das konnte ich so nicht gebrauchen. Schnell war im Netz eine passende Lösung gefunden. Um die Auswahl und Anzeige von Jahren auch weiter in der Vergangenheit und der Zukunft zu erlauben, muss die Form-Klasse des jeweiligen Objektes angepasst werden. In meinem Fall z.B.:

$years = range(1950, date('Y')+5);
$years_list = array_combine($years, $years);

$this->widgetSchema[‚ba_date‘]->setOption(’date’, array(’years’ => $years_list));

So funktioniert es dann auch mit Daten in den Fünfzigern. Zugegeben, wenig intuitiv, aber es besteht schon ein Ticket welches in Zukunft für eine bessere Lösung sorgen soll…