Hi und hallo.
ich nutze powermail 2.9.0 und habe hier ein völlig eigenes Template für mein Formular verwendet.
Über TS habe ich meinen eigenen Ordner, in dem sich die Templates, Layouts und Partials befinden gesetzt.
Ich habe die Datei Templates/Forms/Form.html folgendermaßen angepasst (unwichtige teile weg gelassen):
<f:for each="{forms}" as="form">
<f:for each="{form.pages}" as="page">
<f:for each="{page.fields}" as="field">
<f:debug>
{field}
</f:debug>
</f:for>
....
Das Debuggen von {field} klappt wie erwartet und gibt dann für jedes Feld in meinem Formular aus:
' Tx_Powermail_Domain_Model_Fields:1 ' (38 chars)
' Tx_Powermail_Domain_Model_Fields:2 ' (38 chars)
' Tx_Powermail_Domain_Model_Fields:3 ' (38 chars)
usw.
Nun greife ich innerhalt der Schleife <f:for each="{form.pages}" as="page"> auf die einzelnen Felder so zu:
{page.fields.1.title}
{page.fields.2.title}
...
Leider bekomme ich nun einen Fehler:
"
Oops, an error occurred!
No template has been specified. Use either setTemplateSource() or setTemplatePathAndFilename().
"
Ich habe bereits geprüft, dass es nicht wirklich an einem fehlenden Template liegt, sondern tatsächlich am Aufruf:
{page.fields.2.title}
Entferne ich diesen, wird die Seite richtig gerendert (nur ohne die Formularfelder versteht sich 🙂
Wenn ich das debugge
<f:debug>
{page.fields}
</f:debug>
Bekomme ich tatsächlich ein "Array" als Rückmeldung, es sind also fields Elemente in page vorhanden...
Nun das Komische:
Bis heute hatte ich nur ein einziges powermail Formular in meinem TYPO3. Da hat dies alles wunderbar funktioniert!
Heute habe ich ein zweites Formular hinzugefügt, und seitdem kommt dieser Fehler... Sehr komisch...
Meine Fragen lauten wie folgt:
1. Wie greife ich auf die einzelnen Felder in meiner for Schleife zu, wenn nicht über:
{page.fields.1.title}
?
2. Gibt es evtl eine Möglichkeit, und das wäre noch viel besser, nicht über den index eines Feldes auf dieses zuzugreifen, sondern entweder über den eindeutigen Namen, oder wenigstens über seine UID? Beispiel:
{page.fields.vorname.title}
oder
{page.fields.1234.title} (1234 ist hier die UID, nicht der Index)
Vielen Dank für jeden Tipp.