Ergebnis 1 bis 3 von 3

Thema: Persönliche Daten: Änderungsdatum setzen bei Änderung von Kontaktdaten

  1. #1
    Contao-Nutzer Avatar von althoffc
    Registriert seit
    24.06.2009.
    Beiträge
    125

    Standard Persönliche Daten: Änderungsdatum setzen bei Änderung von Kontaktdaten

    Hallo,

    ich habe folgendes Anliegen:
    Ich möchte für alle Vereinsmitglieder eine Liste auf der Homepage zur Verfügung stellen, anhand der die jüngsten Änderungen von "Perönlichen Daten" (z.B. Telefon, Handy, Anschrift) zu erkennen sind.

    Dazu möchte ich eine Benutzerliste verwenden, in der das Änderungsdatum (neues Feld in tl_member) als auch ein Textfeld (ebenfalls neues Feld in tl_member) angeben, wann welche Kontaktdaten geändert wurden.

    Vereinfacht:
    Änderungsdatum | Name .... geändert
    03.04.2012 | Max ... Email, Telefon
    02.04.2012 | Julia ... Handy
    01.04.2012 | Dietmar .... Anschrift
    28.03.2012 | Miriam .... Handy

    Die beiden Felder "Änderungsdatum" und "Textfeld" habe ich bereits in tl_member ergänzt.

    Bisher habe ich vesucht, mit dem save_callback() für die relevanten Felder (Handy, Email, Straße) das Änderungsdatum bzw. das Textfeld zu befüllen, bin dabei aber auf folgendes Problem gestossen.

    In der save_callback-Funktion kann ich den bisherigen Wert des Tabellenfeldes mit dem Wert des Formularfeldes vergleichen und so feststellen, ob das Feld geändert wurde.
    So weit, so gut.

    Mir ist es aber noch nicht gelungen, ein anderes als das an die callback-Funktion mitgegebenes Formular-Feld zu ändern.
    Z.B. möchte ich bei Änderung der Handy-Nummer das Feld "Änderungsdatum" mit dem aktuellen Tagesdatum sowie das Textfeld mit dem Hinweis "Handy" belegen.

    Gibt es eine Möglichkeit, innerhalb einer save_callback-Funktion (des Moduls "Persönliche Daten") andere Formularfelder als das an die Funktion übergebene Formularfeld zu verändern?


    Vielleicht ist mein ansatz mit dem save_callback auch ganz falsch.
    Wie könnte sonst die oben beschriebene Anforderung gelöst werden?

    Gruß
    Carsten
    Albert Einstein: Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.

  2. #2
    Contao-Fan
    Registriert seit
    10.03.2011.
    Beiträge
    340

    Standard

    Hallo Carsten,

    Ich denke du hast nur zwei Möglichkeiten. Entweder mit dem Save_Callback für die einzelnen Felder, dann aber nur das eine Feld. Für andere Felder musst du dann mittels $this->Input->post() arbeiten. Beachte im Save-Callback, dass die Daten noch nicht in der DB geändert wurden. Anders ist es im submit_callback. Da hast du Zugriff auf alle Felder. Die Werte sind allerdings schon gespeichert.
    Bei deiner Lösung mit dem Save_Callback solltest du auch Bedenken, was passiert, wenn du das änderungsdatum bei einem Feld auf das aktuelle Datum in der DB änderst und anschließend geht eine Validierung schief.

    Ich würde die Wert wahrscheinlich im Save-Callback in die Session schreiben (die Alten) und im Submit_Callback prüfen und das Änderungsdatum setzen.

    Grüße Gerrit

  3. #3
    Contao-Nutzer Avatar von althoffc
    Registriert seit
    24.06.2009.
    Beiträge
    125

    Standard

    Hallo gerritlo,

    danke für Deine Antwort.

    a) Save-callback
    Ja, mir ist bewusst, dass die Daten zu diesem Zeitpunkt noch nicht gespeichert sind. Ich kann die Werte alt - neu miteinander vergleichen um Änderungen festzustellen.
    Wenn nach (noch nicht realisiertem) Setzen des Änderungsdatum und Art der Änderung ein Validierungsfehler auftritt, wird das Formular/die Felder ja auch nicht gespeichert, oder?
    In dem Fall wird dann auch das Änderungsdatum und die Änderungsart nicht gespeichert, was in meinem Sinne wäre.

    b) submit_callback
    Zu diesem Zeitpunkt habe ich zwar Zugriff auf alle (bereits gespeicherten) Werte, kann aber keinen Vergleich mehr durchführen, da mir die alten Daten nicht mehr zur Verfügung stehen.
    --> Alte Werte in der Session speichern um Vergleich in submit-callback ausführen zu können.

    Leider habe ich bisher selbst noch keine Formular-Felder über $this-Input->post() angesprochen und auch noch keine Daten in eine Session gespeichert.


    Ich werde mich zu beiden Ansätzen mal versuchen ein wenig schlauer zu machen und hier berichten.

    Vielen Dank bis hierher.

    Gruß
    Carsten
    Albert Einstein: Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

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