Zum Inhalt springen

Dynamische Felder im BE durch locallang_db.xml

Erstellt am 20. März 2009 · 8 Antworten · letzte Antwort am 21. März 2009

Tags: TCA, Frage

MsvP ·

Hallo zusammen,

gibt es eine Möglichkeit, die label-Felder der locallang_db.xml dynamisch zu erzeugen. Um bei jeder Detailansicht eines Artikels im BE eine andere Beschriftung der Felder erzeugen zu können?

Oder sollte ich das direkt in der tca.php vollziehen?

Lg
Micha

MsvP ·

Hallo TheBodi,

dann doch hier einmal eine Kurzübersicht zu meiner Extension.

Es handelt sich um varfeform. Sie erzeugt ein variables Formular, dass aus zwanzig Feldern besteht für den Frontend. Diese können bisher nur per Template File mit Namen versehen werden.
Das bedeutet, in der Datenbank werden die Felder nur als Field 1 - Field 20 gespeichert.

Die eingegebenen Formulardaten werden in einem vom Administrator definierten Sys-Folder gespeichert.

Da ich jetzt gerne aber auch im BE die Felder des jeweiligen Formulars mit Namen versehen haben möchte, habe ich überlegt eine zweite Datenbank zu eröffnen, in der Feldnamen gespeichert werden können.

Sprich dort werden dann wieder Field 1 - 20 gespeichert, allerdings kommen die Inhalte dafür vom Admin im BE und dort stehen die Namen der Felder, keine Inhalte der Felder.

Mein nächstes Problem war jetzt, wie verbinde ich diese Tabelle mit den Einträgen aus dem FE. Erste Überlegung, einfach die ID des jeweiligen Eintrags, mit den zugehörigen Feldern speichern, macht aber keinen Sinn, denn wenn ich einen Eintrag für den Inhalt des Formulares aus irgendeinem Grund mal nicht über das FE Formular sondern direkt im BE mache, würde dort keine Verbindung bestehen.

Mein Lösungsansatz schaut jetzt folgendermaßen aus:

- 1. Tabelle mit den Inhalten der varfeform Felder 1-20 und der id des Sys-Ordners

- 2. Tabelle mit den Namen der Formularfelder eines Sys-Ordners. Sprich dort sind Tabellenspalten für die Felder 1-20, sowie eine Verknüpfungsid zu dem jeweiligen Sys-Ordner.

- 3. Änderung der tca.php oder locallang_db.xml meiner Extension damit sie überprüft ob ein Eintrag in der Formularnamen Tabelle für den aktuellen Sys-Ordner vorliegt, wenn ja, dann sollen die Namen aus der DB verwendet werden zum labeln der Felder. Wenn nicht sollen standart Namen dort stehen (Feld 1 - Feld 20).

Das wäre meine Idee.
Ob das jetzt eine Gute ist, dürft ihr entscheiden. ;-)

Wenn ich diese Lösung so benutzen kann, würde ich denoch gerne wissen, wo ich die DB Abfrage aus Punkt 3 einbauen soll. In die tca.php meiner Extension?
Und welche Art von DB Abfrage kann ich dort aufrufen? Mittels der Typo3 Syntax, greift diese dort?

Lg
Micha

ThBodi ·

Du hast jetzt zwar viel geschrieben, aber inhaltlich wenig vermittelt.

Sie erzeugt ein variables Formular, dass aus zwanzig Feldern besteht für den Frontend. Diese können bisher nur per Template File mit Namen versehen werden. Das bedeutet, in der Datenbank werden die Felder nur als Field 1 - Field 20 gespeichert.

Was ist an dem Formular variabel, wenn es fest aus zwanzig Feldern besteht? Nur die Feldbezeichnung?

In einer Tabelle (entspricht einem TYPO3-Datentyp) sollten nur gleichartige Daten gespeichert werden, somit entfällt die Notwendigkeit, Felder unterschiedlich zu bezeichnen.

Die Grundfrage bleibt: Was soll die Extension wirklich machen? Nur irgenwelche Daten in die Datenbank zu schreiben, ist doch wohl wenig sinnvoll - die Daten sollen doch bestimmt in irgendeiner (anderen) Form angezeigt oder verwendet werden, oder?

MsvP ·

Du willst es aber genau wissen! ;-)

Letztendlich steuert sich diese Extension über deren Template.
Hier mal eine Seite in der ich die Extension im Einsatz habe und für die ich sie gebaut habe:

Formularansicht:

http://d21.udmedia.de/westernhorse/anzeigen/kleinanzeige-aufgeben/

Die dazugehörige Listen ansicht der Einträge:

http://d21.udmedia.de/westernhorse/anzeigen/kleinanzeigen/

Und genauso gut kann das Formular aber auch auf diese Art eingesetzt werden (incl. Dateiupload Feld, da dort eine Prüfung diesbezüglich während des Speicherns stattfindet, mit Thumbnailerzeugung):

http://d21.udmedia.de/westernhorse/anzeigen/horse-market-eintrag-erstellen/

http://d21.udmedia.de/westernhorse/anzeigen/horse-market/

Im Backend kann ich bisher anhaken, welches der 20 Felder required sein soll.

Hier das bisherige Manual:
http://typo3.org/documentation/document-library/extension-manuals/varfeform/1.2.0/view/1/5/

Das heißt, im Moment ist das Formular in sofern Variabel, dass es über das HTML des Templates jede erdenkliche Art von Formular darstellen kann.
(Ich weise darauf hin, dass es sich hierbei noch um einen Alpha Status handelt.
In Zukunft plane ich die Anzahl der Felder ebenfalls dynamisch anpassen zu können. Dazu muss ich dann aber den Datenbank Prozess etwas umbauen, was aber auch kein Problem darstellen sollte. Aber eins nach dem anderen.)

Jetzt weißt du warum und wie die Extension funktioniert, jetzt brauche ich für die gespeicherten Felder aber immernoch eine Möglichkeit die Namen der Felder im BE anzuzeigen.

Lg
Micha

ThBodi ·
MsvP schrieb

Du willst es aber genau wissen! ;-)
...
Jetzt weißt du warum und wie die Extension funktioniert, jetzt brauche ich für die gespeicherten Felder aber immernoch eine Möglichkeit die Namen der Felder im BE anzuzeigen.

Das wollte ich, weil ich sowas befürchtet hatte.

Du solltest das Projekt sterben lassen und wenn es geht, auch aus dem TER entfernen. Das was Deine "Extension" mal irgendwann können soll, erledigt Dir powermail jetzt schon besser.

Und wenn Du unbedingt Deine "eigene Suppe" mit dieser "Extension" kochen willst, musst Du das ganze Konzept umarbeiten - so wie jetzt und mit dem was Du hier gerne haben würdest, kommst Du nicht ans Ziel.

MsvP ·

Naja, mir geht es aber bei der Extension nicht ums mailing.

Theoretisch kannst du die Extension für alles einsetzen. Ob als Gästebuch, Kleinanzeigenmarkt, etc. was du willst und durch die Template Anpassung ist es absolut flexibel in der Aus- und Eingabe.

In sofern halte ich die Extension für durch aus wichtig.

Ich habe für meine Befürnisse nichts finden können, dass der Funktionsweise meiner Extension entspricht.

Lg
Micha

ThBodi ·

Theoretisch kannst du die Extension für alles einsetzen. Ob als Gästebuch, Kleinanzeigenmarkt, etc. was du willst und durch die Template Anpassung ist es absolut flexibel in der Aus- und Eingabe.

Genau das ist doch das Problem. Jeder Anwendungsfall hat eigene Anforderungen (bspw. Gästebuch -> Felder mit BBCodes, E-Mail-Feld, Homepage-Feld, Kleinanzeigen -> Felder mit Zeichenbegrenzung, Sortierung, Suchfunktionalität, ...). Das ganze sowohl in der Validierung der Daten als auch bei der Ausgabe dieser.

Wenn das alles mit einer einzigen Extension realisierbar wäre, meinst Du nicht, dass die evtl. schon mal jemand vor Dir entwickelt hätte? Und wofür gäbe es dann so viele unterschiedliche Extensions im TER?

Naja, wie auch immer. Wie oben auch schon geschrieben, kannst Du die BE-Label flexibel (zumindest was Du als flexibel bezeichnest) mit TSConfig gestalten.

MsvP ·

Okey, dank dir auf jedenfall für deine Mühen.

Ich denke ich werde dennoch daran festhalten. Mir hat die Extension definitiv die Arbeit erleichtert. Und du hast sicherlich recht, dass man für den jeweiligen Anwendungsfall lieber die passende Extension nehmen sollte. Aber genau da liegt ja das Problem, für die Art von Formularen und Ausgaben, wie ich sie brauchte, gab es eben keine Extension.
Und dafür eignet sich diese eben ideal.

Nimm es von mir aus als Lückenschließer für die Graubereiche, in denen es keine Extensions gibt. ;-)

Das mit dem TSConfig schaue ich mir aber an. :-)

Nochmal Danke.

Lg
Micha