Contao-Camp 2024
Ergebnis 1 bis 8 von 8

Thema: Mitglied eine neue Gruppe zufügen mit php

  1. #1
    Contao-Nutzer
    Registriert seit
    13.06.2019.
    Beiträge
    4

    Standard Mitglied eine neue Gruppe zufügen mit php

    Ich bin am verzweifeln. Ich möchte im Grunde nur per PHP einem Mitglied eine neue Gruppen hinzufügen.
    Diese Variante habe ich bereits ausprobiert:
    $this->Member->allGroups = array_merge($this->Member->allGroups, array(1,2,3)); // Mitglieder-Gruppen ID's
    $this->Member->save();
    Aber irgendwie klappt es nicht. Kann es sein, dass es ab Contao 4 anders sein muss?

  2. #2
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.942

    Standard

    Zitat Zitat von eriknack Beitrag anzeigen
    Aber irgendwie klappt es nicht.
    KannstDu „irgendwie“ näher spezifizieren? es passiert gar nichts, Du bekommst eine Fehlermeldung, ...?

    Zitat Zitat von eriknack Beitrag anzeigen
    Kann es sein, dass es ab Contao 4 anders sein muss?
    Das hört sich so an, als ob dieser Code in Contao 3 funktioniert hätte. Kann ich mir aber nicht vorstellen, denn tl_member hat keine Spalte allGroups.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  3. #3
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.714
    User beschenken
    Wunschliste

    Standard

    in \Contao\MemberModel gibt es verschiedene "findBy..." mit denen Du auf alle, einige, ein Mitglied zugreifen kannst, dann kannst Du die Daten manipulieren

  4. #4
    Contao-Nutzer
    Registriert seit
    13.06.2019.
    Beiträge
    4

    Standard

    Mir ist gerade aufgefallen, dass ich den Code-Schnipsel (das mit ->allgroups) aus einem Community-Beitrag von 2011 übernommen habe. Das kann ja gar nicht mehr funktionieren.

    So , aber jetzt stehe ich wieder ganz am Anfang...
    Ich dachte, das groups ein Array ist. Ist es aber anscheinend gar nicht.
    Wenn ich mir groups einen Members mit var_dump ausgeben lasse, kommt folgendes heraus:

    string(30) "a:2:{i:0;s:1:"1";i:1;s:1:"5";}"

    Füge ich jetzt im Backend eine weitere Gruppe hinzu schaut es so aus:
    string(42) "a:3:{i:0;s:1:"1";i:1;s:1:"5";i:2;s:1:"3";}"

    Die Logik dahinter ist klar:
    a ist die Gesamt-Anzahl der Gruppen
    und für jede Gruppe gibt es einen Block mit
    i "laufende" Gruppe, s:1 (hat laut dca irgendwas mit Sichtbarkeit zu tun)
    und dann die Gruppen-ID.

    Und jetzt ist mir auch eine Lösung eingefallen über String-Funktionen, oder gibt es noch eine elegantere Lösung.

  5. #5
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.942

    Standard

    Das ist ein serialisierter Array, siehe z.B. https://www.php.net/manual/de/function.serialize.php
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  6. #6
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.714
    User beschenken
    Wunschliste

    Standard

    Serialisiertes Array aus DB => desrialisieren in PHP-Array => Array manipulieren => serialisieren => in DB speichern

  7. #7
    Contao-Nutzer
    Registriert seit
    13.06.2019.
    Beiträge
    4

    Standard

    Danke für die Hinweise.
    Da hätte ich auch selbst drauf kommen können.

    Hier mein Code, falls irgendjemand vor dem gleichen Problem steht.

    Code:
        	$groups_liste= unserialize($objMember->groups);
            array_push($groups_liste, $neue_group_id);
    	$neue_groups= serialize($groups_liste);
    
            $objMember->groups = $neue_groups ;
            $objMember->save();

  8. #8
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.942

    Standard

    Verbesserungsvorschlag: noch array_unique() verwenden,damit Du in $neue_groups keine Doppelten drin hast.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

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
  •