PHP Zugriff auf beuntzerdefiniertes Benutzerfeld

  • Hallo zusammen,


    ich möchte innerhalb eines Modules einer PHP-Variablen den Inhalt des eingeloggten Benutzersfeldes zuweisen. Etwa $var = $user->meinBenutzerfeld


    Alle Verweise zu den neuen Felder bzw. Seiten sind noch nicht brauchbar. Die oft verwiesene Seite: https://docs.joomla.org/JFactory/getUser ist leer. Aus https://docs.joomla.org/J3.x:A…ustom_fields/Overrides/de werde ich nicht schlau.


    Wie bekomme ich den Inhalt des Feldes?

  • Code
    $user = JFactory::getUser();
    $context = 'com_users.user';
    JLoader::register('FieldsHelper', JPATH_ADMINISTRATOR . '/components/com_fields/helpers/fields.php');
    $customFelder = FieldsHelper::getFields($context, $user);


    Der Rest dann analog Modulname als String in einen URL in einem Modul einbinden. ab Zeile 10.


    Oder halt direkte Ausgabe via ID.


    echo $customFelder[12]->value;


    Immer dran denken, dass ich mir da keine großen Gedanken gemacht habe. Alles rudimentär.

  • Ich nochmal.


    Ich muss mal blöd fragen: Kann es unter Umständen sein, dass die Funktion auch irgendwie (liegt in einem Formular) in die DB schreibt?


    Das ist die einzige Verwendung des Wertes und anscheinend leert sich das Feld bei manchen Usern. (noch nicht repoduzierbar)
    Alternativ ein Joomla Bug der recht neuen Funktion.


    Gruß

  • Das hängt davon ab, welches Formular und wie es aufgebaut ist.


    Generell kann man in Joomla nicht einfach irgendwelche Felder in ein JForm-Formular oder anderes bei der Ausgabe des formulars einsetzen, ohne sicherzustellen, dass sie auch beim Speichern mitgenommen werden (per XML-Datei und/oder Plugin oder so).


    Ein Custom Benutzerfeld wird erst mal nur in einem Joomla-Benutzerformular mitgespeichert.


    Kurz: Mehr Info, bitte.

  • Also ich habe ein kleines Modul erstellt das aus einer von einem CRM erstellten und auf den FTP hochgeladenen XML Datei die Datensätze ausgibt, die dem Kunden zugeordnet wurden. (Ticketsystem)


    Dazu hole ich mir die "webticketgruppenid" aus der Joomla-Benutzer DB.

    Code
    $user = JFactory::getUser();
    $context = 'com_users.user';
    JLoader::register('FieldsHelper', JPATH_ADMINISTRATOR . '/components/com_fields/helpers/fields.php');
    $customFelder = FieldsHelper::getFields($context, $user);
    if (isset($customFelder[0]->value))
    {
      $user_webticketgruppenid = $customFelder[0]->value;
    }else{
      echo "<div class='bg-danger'>Keine Ticket ID hinterlegt. Bitte wenden Sie sich an den Support.</div>";
    }


    Dann schleife ich das XML durch und lese nur die Zeilen mit passender $user_webticketgruppenid aus.


    Auf die Verwendung der Daten im Formular habe ich jetzt verzichtet, trotzdem wird mir der Wert beim Benutzer geleert. Die Logik hinter der Leerung der Benutzerfeldern habe ich noch nicht herausgefunden. Die Stelle im Code ist eigentlich der einzige Berührpunkt.


    Datenbanken habe ich schon kontrolliert und repariert.


    Danke