Hallo Christian,
ich finde nicht dass du nur "meckerst"!

Es ist im Gegenteil wichtig zu sehen, was dir fehlt bzw. was du brauchst um schnell und einfach Applikationen entwickeln zu können! Insofern: danke für dein Feedback!
Die Liste der Jahre in der Auswahl wird im Tag in der Methode
onParseTime() erzeugt. Das passiert beim Parsen eines Tags und ist damit an eine statische Definition im Template gebunden. Um das etwas dynamischer zu definieren sollte der Parameter
yearrange vielleicht ein wenig erweitert werden und nicht nur "now" als Wert für das Ende der Liste verstehen. Magst du dir mal überlegen, welche Anwendungsfälle du bei dir hast, dann könnten wir ein Feature für 3.4 umsetzen.
Im Controller hast du aus meiner Sicht zwei Optionen:
#1 Dynamische Definition des yearrange
Code: Alles auswählen
$form->addFormElementAfterMarker('marker-name', 'form:date', ['name' => 'foo', 'yearrange' => '2017-2020']);
Vorteil: du kannst das Feld im Controller dynamisch erzeugen und zum Formular hinzufügen.
Nachteil: du brauchst einen Form-Marker und Styling wird ggf. erschwert.
#2 Manipulation der Jahres-Liste
Code: Alles auswählen
$yearList = $form->getFormElementByName('date-selector')->getYearControl();
for ($i = 2010; $i < 2018; $i++) {
$yearList->addOption($i, $i);
}
Vorteil: du kannst jedes Einzel-Feld im Controller dynamisch befüllen.
Nachteil: ich habe auf der aktuellen Implementierung keine Lösung parat um die bereits vorbefüllten Optionen zu resetten -
SelectBoxTag hat keine Möglichkeit die aktuell bestehenden Optionen auch wieder zu entfernen. Letzteres wäre auch eine Änderung am Tag, der aber - zugegeben - sehr sinnvoll wäre. Dann könntest du z.B. folgendes tun:
Code: Alles auswählen
$yearList = $form->getFormElementByName('date-selector')->getYearControl();
yearList->deleteAllOptions();
for ($i = 2010; $i < 2018; $i++) {
$yearList->addOption($i, $i);
}
Hoffe das hilft dir weiter!
