+ Antworten
Ergebnis 1 bis 6 von 6

Thema: "Self-Replicating" JForm-Fields

  1. #1
    Kommt häufiger vorbei
    Registriert seit
    14.06.2009
    Ort
    Berlin
    Beiträge
    280
    Bedankte sich
    59
    Erhielt 42 Danksagungen
    in 42 Beiträgen

    Standard "Self-Replicating" JForm-Fields

    Hi,

    wie geht man am besten vor, wenn folgendes mit JForm lösen möchte:
    ein Feld wird einmal in der XML Datei definiert, davon soll der User dann mehrere "Instanzen" erstellen können, mit einem Klick auf einen Button o.ä.

    Konkret habe ich 2 <select>-Elemente, von denen der User bei Bedarf mehr als eins auswählen können soll. Ich habe diesen beiden Elementen in JForm das Attribute "multiple" gegeben, da erstellt mir dann JForm den Namen als Array, also z.B. <select name="myselect[]">. Da ich eigentlich aber garkein multiple-select haben möchte, mache ich dies per JS wieder rückgängig. Auch (per JS) kann dann der User auf ein Button klicken, womit diese beiden Elemente kopiert und eingefügt werden.

    Wenn er nun auf speichern klickt kann ich in dem Model die entsprechenden Methoden überschreiben und das ganze ordentlich abspeichern (geht eh in eine mapping-Tabelle, das zu editierende "Item" soll mit diesen Feldern auf mehrere Kategorien/Tabs gemappt werden, siehe den anderen Thread von mir in "Komponenten"). Soweit klappt eigentlich auch alles.

    Problem: was wenn der User einen Eintrag editiert, welcher bereits Kategorien zugeordnet wurde? Dann müssten nämlich soviele Elemente generiert werden wie vorher abgespeichert mit den dazugehörigen ausgewählen Werten. Um das ganze einigermaßen sauber zu lösen fällt mir nur ein Plugin ein, der sich in die beiden Events einklinkt und sowohl die Daten als auch das Formular entsprechend ändert. Scheint mir aber irgendwie ein "Overkill".

    Falls es doch nur mit Plugin gehen sollte, wie könnte man das ganze so abstrahieren das dieses Plugin wiederverwendbar ist?

    Hat jemand andere Ideen?

    Danke
    "Wenn die geistige Sonne niedrig scheint, dann wirft auch ein Zwerg einen langen Schatten" - Rechts LINKS unten befindet sich das "Danke" Button
    http://www.nachdenkseiten.de
    http://islam.de/72.php

  2. #2
    Gehört zum Inventar Avatar von Helrunar
    Registriert seit
    05.03.2006
    Ort
    /home/helrunar/Webdev
    Beiträge
    6.251
    Bedankte sich
    569
    Erhielt 1.547 Danksagungen
    in 1.399 Beiträgen

    Standard

    Ich würde da nicht mal den Weg über eine Eigenprogrammierung gehen, sondern würde lieber mit einem CCK arbeiten. Mit Seblod kannst Du ein entsprechendes Feld in den Inhaltstypen (z.B. die normale Eingabemaske für Artikel) einklinken und es integrieren. Das Feld wird vom CCK bereits mitgebracht, so dass es nicht nochmal extra programmiert werden muss. Zudem kümmert sich Seblod um das Einklinken, um das Speicher, Anzeigen und Ändern der Daten ;-)

  3. #3
    Kommt häufiger vorbei
    Registriert seit
    14.06.2009
    Ort
    Berlin
    Beiträge
    280
    Bedankte sich
    59
    Erhielt 42 Danksagungen
    in 42 Beiträgen

    Standard

    Witzigerweise habe ich genau das was ich grade mache bereits mit Seblod probiert zu bewerkstelligen. Da ich das erste mal ein CCK benutzt habe war ich von den Möglichkeiten beeindruckt, aber wie es halt immer so ist, je spezieller der Fall umso weniger greift etwas so auf die "Allgemeinheit" ausgerichtetes wie ein CCK.

    Du kannst dir den anderen Thread(s) von mir durchlesen, die gingen fast alle um diesen einen speziellen Fall, wo ich im Backend Felder anlege für ein Formular im Frontend, diese Felder aber zu Kategorien/Tabs (genaures in den anderen Threads) gehören können etc. Jedenfalls habe ich nach einer sehr intensiven Woche feststellen müssen (auch mit Support in deren Forum) dass Seblod einfach nicht dafür geeignet ist.

    ich wollte jetzt einfach mal probehalber ein Plugin erstellen mit dem ich versuche folgende Probleme zu lösen:
    1. Beim laden des Edit-Layouts sollen diese Felder in der Anzahl wieder generiert werden, wie viele es beim Abspeichern waren
    2. Diese Felder sollen natürlich dann auch die Werte haben, welche beim Abspeichern gewählt wurden

    Scheint aber nicht so einfach zu sein wie ich dachte. Die Anzahl der Felder herauszufinden ist einfach, aber wie generiere ich weitere Felder innerhalb des Plugins und füge diese dann der Form hinzu? Vor allem sind es ja immer die gleichen Felder, also meinetwegen muss ich dann 10 mal ein <input> erstellen, welches immer den gleichen Namen hat, z.B. <input name="cat[]">.
    Irgendwie habe ich das Gefühl diese eine Sache wäre ohne JForm einfacher zu lösen :/
    "Wenn die geistige Sonne niedrig scheint, dann wirft auch ein Zwerg einen langen Schatten" - Rechts LINKS unten befindet sich das "Danke" Button
    http://www.nachdenkseiten.de
    http://islam.de/72.php

  4. #4
    Kommt häufiger vorbei
    Registriert seit
    14.06.2009
    Ort
    Berlin
    Beiträge
    280
    Bedankte sich
    59
    Erhielt 42 Danksagungen
    in 42 Beiträgen

    Standard

    Ok der neueste Tipp geht irgendwie in die Richtung der üblichen Verdächtigen, eigenes JFormField für diesen einen Fall erstellen. Die loadFormData() Methode im Model überschreiben und dafür sorgen dass die Daten vonner DB für das JFormField verfügbar sind, im JFormField dann danach suchen und entsprechend viele Felder erstellen.

    Ich glaube so könnte es gehen. Hätte ich selbst drauf kommen können ^^ irgendwie nicht daran gedacht, dass ich in der JFormField Klasse ja auch Zugriff auf den Value von diesem Feld habe.
    "Wenn die geistige Sonne niedrig scheint, dann wirft auch ein Zwerg einen langen Schatten" - Rechts LINKS unten befindet sich das "Danke" Button
    http://www.nachdenkseiten.de
    http://islam.de/72.php

  5. #5
    Verbringt hier viel Zeit
    Registriert seit
    24.01.2006
    Beiträge
    594
    Bedankte sich
    108
    Erhielt 359 Danksagungen
    in 203 Beiträgen

    Standard

    Wer ist denn der geheime Tippgeber? Oder habe ich den Beitrag verpasst?

    Ansonsten gilt hier doch das selbe wie auch im anderen Thread.

  6. #6
    Kommt häufiger vorbei
    Registriert seit
    14.06.2009
    Ort
    Berlin
    Beiträge
    280
    Bedankte sich
    59
    Erhielt 42 Danksagungen
    in 42 Beiträgen

    Standard

    Ich habe rvsjoen in #joomla gefragt.

    Was gilt hier, was im anderen Thread auch galt?
    "Wenn die geistige Sonne niedrig scheint, dann wirft auch ein Zwerg einen langen Schatten" - Rechts LINKS unten befindet sich das "Danke" Button
    http://www.nachdenkseiten.de
    http://islam.de/72.php

+ Antworten

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein